1
Возможно, это просто, но я схожу с ума. Первый компонент является родительскимКомпоненты связи в Угловом 2
export class CompaniesComponent {
companies: Company[];
companiesShown: Company[];
}
constructor(private _companiesService: CompaniesService) {
this._companiesService.getCompanies().subscribe(data => {
this.companies = JSON.parse(data.text());
this.companiesShowed = this.companies;
});
}
Шаблон выглядит так:
..
<tr *ngFor="let company of companiesShowed">
<td>{{ company.name }}</td>
</tr>
..
<app-pagination [data]="companies" [(dataShown)]="companiesShown"></app-pagination>
Наконец, дети, как это:
export class PaginationComponent implements OnChanges {
@Input() data: Object[];
@Input() dataShown: Object[];
ngOnChanges() {
if (this.data != null && this.data.length > 0) {
this.dataShown = this.data;
console.log(this.dataShown);
}
}
}
console.log дать мне правильную длину dataShown, но в родительском объекте всегда неопределенный/нулевая длина ... почему? Спасибо!
Хорошо, но я не могу испускать метод ngOnChanges(), не получая ошибку, например «Выражение изменилось после того, как оно было проверено». –
Итак, вы хотите испустить 'dataShownChange', когда' data' изменились? Что такое сообщение об ошибке? –
Я упростил код, но список компаний поступает из http-запроса, поэтому, когда создаются приложения с разбивкой по страницам, оно равно null. Я подписываю http-запрос и следующий i-карту json в массив (компании). Когда массив заполняется, компонентная палитра компонента должна обрезать массивные компании и помещать их в компании. Перехват этого события (компании не пустые) методом NgOnChanges, но этот метод не может уведомить родителя. Поэтому я не знаю, что мне нужно делать :( –