У меня есть реализованная пользовательская труба в угловом 2 RC5, которая обрабатывает данные, которые я получаю с сервера. Проблема, с которой я столкнулась, заключается в том, что Pipe выполняет перед ngOnInit
, где я делаю вызовы на сервер.Угловые 2 Трубы, выполняющиеся до ngOnInit
В качестве теста я передал уже заполненный список в трубку, и все работает так, как ожидалось. Единственная проблема, с которой я столкнулась, заключается в том, что Pipe выполняет, когда страница отображается. И поэтому список в этом случае пуст.
Есть ли способ «задержать» отрисовку страницы, чтобы при выполнении Трубы она имела данные, полученные с сервера?
Это пример моего кода:
Компонент
ngOnInit() {
Observable.forkJoin([
this.testService.get(),
this.multilingualService.get(localStorage.getItem('currentPage'))
]).subscribe(servicesResult => {
this.mainList = servicesResult[0];
this.pageMultilinguals = servicesResult[1];
},
error => this.handleError(error));
}
Труба
@Pipe({name: 'multiLang'})
export class MultilingualPipe implements PipeTransform {
transform(value: string, pageMultilinguals: Multilingual[], context: number): string {
for (let i = 0; i < pageMultilinguals.length; i++) {
if (pageMultilinguals[i].reference === value && pageMultilinguals[i].contexTypeId === context) {
return pageMultilinguals[i].value;
}
}
}
}
Шаблон
<span>{{ 'Test' | multiLang: pageMultilinguals: 9 }}</span>
Вы можете добавить проверку на пустые данные в вашей трубе и просто вернуть исходное значение в этом случае? – rook
Я просто поставил простой пример в шаблоне. Это для многоязычной ссылки, поэтому у вас может быть ссылка «Page_Header_1», и вы получите значение обратно. –