Я пытаюсь создать новый компонент, ResultComponent
, но его метод ngOnInit()
вызывается дважды, и я не знаю, почему это происходит. В коде ResultComponent
наследует @Input
от родительского компонента mcq-component
.
Вот код:
Родительский компонент (MCQComponent)
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'mcq-component',
template: '
<div *ngIf = 'isQuestionView'>
.....
</div>
<result-comp *ngIf = '!isQuestionView' [answers] = 'ansArray'><result-comp>
',
styles: [
'
....
'
],
providers: [AppService],
directives: [SelectableDirective, ResultComponent]
})
export class MCQComponent implements OnInit{
private ansArray:Array<any> = [];
....
constructor(private appService: AppService){}
....
}
Дочерний компонент (result-comp)
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector:'result-comp',
template: '
<h2>Result page:</h2>
'
})
export class ResultComponent implements OnInit{
@Input('answers') ans:Array<any>;
ngOnInit(){
console.log('Ans array: '+this.ans);
}
}
При запуске console.log
появляется два раза, первый раз показывает правильный массив, но второй раз выдает undefined
. Я не смог понять это: почему ngOnInit
в ResultComponent
вызывается дважды?