Как я могу вызвать PipeTransform с параметрами в asyn c способом в шаблоне? - PullRequest
0 голосов
/ 25 марта 2020

В 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>
...