Angular 5 получает неопределенное значение переменных @Input () в функции, вызываемые из ngOnInit () - PullRequest
0 голосов
/ 05 июня 2018

Вот пример кода дочернего компонента.

import { ... } from '@angular/core';
...

@Component({
    ...,
    templateUrl: './example.component.html',
    ...
})
export class ExampleComponent implements OnInit {
    @Input() dataArray: Array<any>;

    constructor(...) {
        ...
    }

    ngOnInit() {
        this.getData();
    }

    getData(){
        console.log(this.dataArray);
    }
}

Я создаю dataArray в родительский компонент и передаю его дочернему компоненту, используя селектор и свойство input.Ниже приведен пример того, как я передаю dataArray от родителя к потомку.

<example [dataArray]="dataArray"></example>

Мне нужно сделать вычисления на dataArray, когда компонент инициализируется, и показать данные в представлении.В настоящее время он никогда не получает данные в getData ().

1 Ответ

0 голосов
/ 05 июня 2018

Кажется, что вы не установили dataArray должным образом или в конечном итоге позже, чем вы ожидаете.Пожалуйста, попробуйте выяснить, установлен ли он в любом случае, с помощью OnChanges () дополнительно.Если вы действительно установили его правильно, но слишком поздно для OnInit (), у вас должен быть выход из OnChanges ().

import { ..., OnChanges } from '@angular/core';
...

@Component({
    ...,
    templateUrl: './example.component.html',
    ...
})
export class ExampleComponent implements OnInit, OnChanges {
    @Input() dataArray: any;

    constructor(...) {
        ...
    }

    ngOnInit() { }

    getData(){
        console.log('ngOnInit()', this.dataArray);
    }

    ngOnChanges(changes: SimpleChanges) {
        // please note: changes.prop contains the old and the new value...
        console.log('ngOnChanges()', this.dataArray);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...