У меня есть директива, которую я хочу добавить @Input, наблюдаемый для обработки сценариев успеха и неудачи http, наблюдаемых через эту директиву
Directive({
selector: '[search]'
})
export class SearchDirective implements OnInit, OnChanges, OnDestroy {
@Input() searchObs = new Subject();
ngOnInit() {
this.sub = this.searchObs.subscribe(
data => console.log(data),
err => console.log(err._body),
() => console.log('directive completed')
);
}
ngOnDestroy() {
this.sub.unsubscribe();
}
ngOnChanges(changes: SimpleChanges): void {
// tslint:disable-next-line:forin
for (let propName in changes) {
let change = changes[propName];
if (propName === 'searchObs') {
this.searchObs = (change.currentValue as Subject<any>);
this.sub = this.searchObs.subscribe(
data => console.log(data),
err => console.log(err._body),
() => console.log('directive change completed')
);
}
}
}
}
, и мой компонент api наблюдаемый равен
searchObs = new Subject();
this.apiservice.getData(args).subscribe((data) => {
this.searchObs.next(data);
}, err => {
this.searchObs.error(err);
});
}
что происходит сейчас, когда я получил первое значение подписки, будь то успех или ошибка в директиве, а затем никакие данные не привязаны к директиве.