1
У меня есть компонент Angular2, и мне нужно заполнить атрибут интерфейса некоторыми данными, возвращаемыми веб-сервисом. Я этот код:Angular2: дождаться ответа ответа службы перед компонентом show
ngOnInit() {
this.services.callMyService().subscribe(
response => this.response = response,
error => alert(error),
() => this.initInterface()
)
}
initInterface() {
this.myInterface= {
field1: '',
field2: 'someData',
fieldFromService: this.response.field
};
}
но мне кажется, что компонент показал, прежде чем служба имеет делать свою работу. На самом деле, если я пытаюсь получить доступ, например, к field1, я получаю сообщение об ошибке:
error_handler.js:47 EXCEPTION: Cannot read property 'field1' of undefined
что не так?
Переместить 'this.initInterface();' после строки 'this.response = response' в успех обратного вызова. –
Также попробуйте инициализировать свой объект ('this.myInterface = {field1: '', field2: '', fieldFromService: ''};') вне initInterface() –
вы должны использовать * ngIf = "myInterface" в своем html, чтобы проверить, прибывают ли данные или нет. Вы не столкнетесь с неопределенной ошибкой, если используете * ngIf. попробуй –