Угловая подписка не устанавливает значение при вызове другого метода - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть Наблюдение от, я подписываюсь на данные. Если я не установил setTimeout, я не могу получить childnode объекта. в настоящее время я установил таймаут. но ищу правильный подход под углом.

вот мой код:

ngOnInit() {
        this.store.appData.subscribe(value => {
            this.appData = value;
            setTimeout(() => this.setLocales(), 1000); //requires this
        } );
    }


    setLocales(){
        console.log( this.appData.hdr.country );
    }

ошибка, которую я получаю:

ERROR TypeError: Cannot read property 'country' of undefined
    at HeaderComponent.setLocales (header.component.ts:32)
    at SafeSubscriber.eval [as _next] (header.component.ts:26)
    at SafeSubscriber.__tryOrSetError (Subscriber.js:252)
    at SafeSubscriber.next (Subscriber.js:192)
    at Subscriber._next (Subscriber.js:131)
    at Subscriber.next (Subscriber.js:95)
    at BehaviorSubject._subscribe (BehaviorSubject.js:30)
    at BehaviorSubject.Observable._trySubscribe (Observable.js:172)
    at BehaviorSubject.Subject._trySubscribe (Subject.js:98)
    at BehaviorSubject.Observable.subscribe (Observable.js:160)

ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 17, nodeDef: {…}, elDef: {…}, elView: {…}}

1 Ответ

0 голосов
/ 30 апреля 2018

укажите тип any для значения или укажите соответствующий интерфейс и предоставьте проверку внутри функции подписки.

ngOnInit() {
    this.store.appData.subscribe((value: any) => {
        if(value && value.hdr) {
        this.appData = value;
        this.setLocales(); 
      }
    } );
}

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...