В Angular Я использую PipeTransform, который имеет некоторый лог c и возвращает объект данных. Но при его использовании я получаю эту ошибку ExpressionChangedAfterItHasBeenCheckedError . Я прочитал, что вызов в asyn c может решить проблему.
Как я могу вызвать PipeTransform с параметрами в asyn c способом в шаблоне?
Вот код трубы:
@Pipe({ name: 'userCalculation })
export class UserCalculationToStringPipe implements PipeTransform {
public userCalculationModel: UserCalculationModel = new UserCalculationModel('', '', 0);
constructor(private _translate: TranslateService) {}
transform(employeeDay: EmployeeDayModel, resultType: ShowingCalculationItemModel, args?: string): any {
if (employeeDay) {
if (resultType.Type == CalculationItemType.PrevalentCategory) {
if (employeeDay.PrevalentCategory) {
this.userCalculationModel.IconId = employeeDay.PrevalentCategory.IconId;
}
return this.userCalculationModel;
}
if (resultType.Type == CalculationItemType.PendingApprovedAbsences) {
this.userCalculationModel.Status = 0;
if (employeeDay.Absences && employeeDay.Absences.length === 0) {
return this.userCalculationModel;
}
this.userCalculationModel.IconId = employeeDay.Absences[0].IconId;
if (employeeDay.Absences[0].Status == ApprovalStatus.Pending) {
this.userCalculationModel.Status = 1;
let hoverTitle = "Hover test";
this.userCalculationModel.Title = hoverTitle;
}
return this.userCalculationModel;
}
}
}
}
и использование в шаблоне:
<div *ngIf="day.value | userCalculation: selectedCalculation; let item">
{{ item.Status }}
</div>