angular - Udefinert komponentparameter i angular2
Prøver å finne dette ut, men klarer ikke... kanskje det er noe åpenbart:
Kalling av 'todo'-komponenten i HTML:
<div *ngFor="let item of todoLists" class="row">
<div class="col-xl-7 col-lg-7 col-md-12 col-sm-12 col-xs-12 bottom-15">
<todo [listName]="item"></todo>
</div>
</div>
TodoComponent-komponent parameterbinding:
export class TodoComponent {
public todoList:Array<any>;
public newTodoText:string = '';
@Input() listName: string;
constructor(private _todoService: TodoService) {
console.log("TodoComponent: constructor");
console.log("TodoComponent: listname - " + this.listName);
this.todoList = this._todoService.getTodoList(this.listName);
}
Parameteren listName er alltid 'undefined'. TodoComponent blir initialisert to ganger (siden jeg har to lister).
Hva gjør jeg galt her?
All hjelp er verdsatt.
Svar #1
Input vil ikke være tilgjengelig i konstruktøren. Du må bruke livssyklus-hooken ngOnInit:
ngOnInitkalles rett etter at direktivets databundne egenskaper har blitt sjekket for første gang, og før noen av dets barn har blitt sjekket. Det blir kun kalt én gang når direktivet blir opprettet.
Du vil implementere OnInit slik:
import { OnInit } from "@angular/core";
export class TodoComponent implements OnInit {
...
constructor(private _todoService: TodoService) {
console.log("TodoComponent: constructor");
}
ngOnInit() {
console.log("TodoComponent: ngOnInit");
console.log("TodoComponent: listname - " + this.listName);
this.todoList = this._todoService.getTodoList(this.listName);
}
}
