Я пытаюсь использовать Observable
и ChangeDetectionStrategy
, чтобы сообщить другим компонентам об изменениях. К сожалению объект Observable addItemStream
не определен. Что здесь не так?Угловой 2. Наблюдаемый не определен
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, Input } from '@angular/core'
import { ROUTER_DIRECTIVES, Router } from '@angular/router';
import {Observable} from 'rxjs/Observable';
@Component({
selector: 'bp-header',
templateUrl: 'app/header.component.html',
directives: [ROUTER_DIRECTIVES],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class HeaderComponent {
@Input() addItemStream: Observable<any>;
public isActive: number;
public language: string = "en";
constructor(private cd: ChangeDetectorRef) {}
ngOnInit() {
this.isActive = 1;
}
ngAfterViewInit() {
this.addItemStream.subscribe(() => {
this.setLanguage; // application state changed
this.cd.markForCheck();
})
}
public setLanguage = (language: string) => {
if (this.language === language) { return }
else { this.language = language };
}
public setActive(active: number) {
if (this.isActive === active) return;
this.isActive = active;
}
}
ли вы имеете в виду это: ngAfterViewInit() { this.addItemStream.subscribe (() => { this.setLanguage this.cd.markForCheck(); }) } –
Я обновил свой код выше, но есть такая же ошибка. –
Он должен работать, но это зависит от того, когда и где вы создаете Observable. Без дополнительного контекстного кода трудно сказать, в чем проблема. В любом случае: я бы рекомендовал разместить Observable в службе. Это лучшее решение. – hholtij