Plunkrを呼び出す対象にもかかわらず、発生しません:https://plnkr.co/edit/KfPfVSbZm087uIPvFEkM?p=preview指令サブスクリプションは、次の
私はモーダル・コンポーネントのAPI機能を提供するサービスを持っている、と私は追加するために使用することができますディレクティブを得ましたモーダルが開いているときに、任意の要素へのクラス。しかし、私が何をしていても、指令内のサブスクリプションは起動しません。
私はSubject
とBehaviorSubject
の両方を使用しようとしましたが、何も機能しません。
サービス:
@Injectable()
export class ModalApiService {
constructor() {}
private states = new Subject<any>();
states$ = this.states.asObservable();
open(id: string, template?: string): void {
this.states.next({isOpen: true, id: id, template: template});
// This runs as expected
console.log(true);
}
close(id: string): void {
this.states.next({isOpen: false, id: id});
}
}
指令:
@Directive({
selector: '[modalState]'
})
export class ModalStateDirective implements OnDestroy, OnInit {
constructor(private modalApi: ModalApiService) {}
private modalSubscription: Subscription;
@HostBinding('class.modal-open')
isOpen: boolean;
ngOnInit() {
this.modalSubscription = this.modalApi.states$.subscribe(
state => {
this.isOpen = state.isOpen;
console.log(this.isOpen)
}
);
}
ngOnDestroy() {
this.modalSubscription.unsubscribe();
}
}
それは私の本当のアプリでBehaviorSubjectでは動作しません...だから、ここで何が起こっているのか。 – Chrillewoodz
その難しいです。コードとrxjsまたはrxjs演算子のインポートを再確認してください。 – micronyks