Angular: ошибка TS2322: тип «Наблюдаемый <{}>» не может быть назначен ... с оператором share () - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в Angular 5 и внедряю шаблон Observable / Observer, чтобы поделиться некоторыми событиями и некоторыми изменениями данных для подписчиков.

Вот фрагмент кода:

...
@Injectable()
export class NidoService {
  ...
  event$: Observable<StrutturaDto[]>;
  private _observer: Observer<any>;

  event_dettaglio$: Observable<Struttura>;
  private _observer_dettaglio: Observer<any>;

  constructor() {
     this.event$ = new Observable(observer => this._observer = observer).share();
     this.event_dettaglio$ = new Observable(observer => this._observer_dettaglio = observer).share();
  }
  ...
}

Когда я пытаюсь собрать приложение с ng build , я получаю эти ошибки в двух строках кода в конструкторе :

ERROR in src/app/services/nido.service.ts(28,7): error TS2322: Type 'Observable<{}>' is not assignable to type 'Observable<StrutturaDto[]>'.
Type '{}' is not assignable to type 'StrutturaDto[]'.
Property 'includes' is missing in type '{}'.
src/app/services/nido.service.ts(29,7): error TS2322: Type 'Observable<{}>' is not assignable to type 'Observable<Struttura>'.
Type '{}' is not assignable to type 'Struttura'.
Property 'idStruttura' is missing in type '{}'.

Когда я использую его в режиме разработки, у меня нет проблем, но я не могу собрать без их исправления. Как я могу изменить две строки кода?

1 Ответ

0 голосов
/ 17 мая 2018

Необходимо указать тип наблюдаемого:

this.event$ = new Observable<StrutturaDto[]>(observer => this._observer = observer).share();

и

this.event_dettaglio$ = new Observable<Struttura>(observer => this._observer_dettaglio = observer).share();
...