>source

나는 내 것을 설정하려고 노력하고 있습니다$ currentuser.API 호출 후에는 오류가 계속 발생합니다.

[default]
Type 'Observable<{}>' is not assignable to type 'Observable<User>'.
  Type '{}' is not assignable to type 'User'.
    Property 'username' is missing in type '{}'.

오류를 던지는 내 구성 요소는 다음과 같습니다.

import {Component, state} from '@angular/core';
import { Observable } from "rxjs";
import { User } from '../../../../models/user';
import { Store } from '@ngrx/store';
import { AppState } from '../../../../reducers';
import {UserService} from "../../../../services/user.service";
@Component({
  selector: 'user-center',
  templateUrl: 'user-center.component.html',
  styleUrls: ['user-center.component.scss']
})
export class UserCenter {
  $currentUser: Observable<User>;
  userService: UserService;
  constructor(
    userService: UserService,
    public store: Store<AppState>  ) {
    this.userService= userService;
    this.$currentUser= this.store.select('user');
  }
  ngOnInit() {
    this.userService.initialise();
  }
}

내 효과는 다음과 같습니다 ::

import { Injectable } from '@angular/core';
import { Effect, StateUpdates, toPayload } from '@ngrx/effects';
import { Observable } from 'rxjs/Observable';
import { AppState } from '../reducers';
import { UserService } from '../services/user.service';
import { UserActions } from "../actions/UserActions";
@Injectable()
export class UserEffects {
  constructor(
    private updates$: StateUpdates<AppState>,
    private userService: UserService,
    private userActions: UserActions,
  ) {}
  @Effect() CurrentUser$= this.updates$
    .whenAction('INIT_USER')
    .switchMap(()=> this.userService.getUser()
      .map(user=> this.userActions.setCurrentUser(user))
      .catch(()=> Observable.of({ type: 'GET_USER_FAILED' })
      ));
}

Angular-Cli Beta 14로 업그레이드 한 후에도 같은 종류의 오류가 발생합니다.

John Baird2021-06-05 07:01:08

나는 또한 Angular-CLI를 사용하고 있지만 여전히 Webpack에 있습니다. 8.

cport12021-06-05 07:01:08
  • 답변 # 1

    생성자를 변경하고 종속성을 설정하여 다음과 같이 저장해야합니다.공개 상점 : 저장소 < 사용자 >...에 아니면 정말로 그대로 필요합니까?< AppState ≫~을 빼앗아가는 것 유형은 생성을 사용하여 자동으로 설정해야합니다​​src /operator/select.ts :

    constructor(
        userService: UserService,
        public store: Store<User>) {
        this.userService= userService;
        this.$currentUser= this.store.select('user');
    }
    

    또는 정의가 정의하기 때문에 오류가 발생합니다.$ currentuser.같이:

    $currentUser: Observable<User>;
    

    데이터를 할당 할 때 사용할 수 있습니다.이. $ currentuser.:

    this.$currentUser= <Observable<User>>this.store.select('user');
    

  • 이전 Elasticsearch Loadmap을 학습합니다
  • 다음 flutter : 안녕하세요! ADMOB의 내 광고는이 쇼의 기본값을 보여줍니다.