RxJS延迟可观察到的字符串

时间:2018-10-22 15:10:21

标签: typescript rxjs pipe delay

如何在Observalbe上添加延迟?

这是我的代码(此代码在管道上):

@Pipe({
    name: 'toTitle',
    pure: false
})
export class ToTitlePipe implements PipeTransform {

    constructor(private translate: TranslateService) { }

    transform(model: BaseModel | ModelType): Observable<string> {
        return this.getModelTitle(model).pipe(map(title => {
            if (model instanceof BaseModel) {
                const classSettings = model.modelType.getClassSettings();
                if (classSettings && classSettings.toTitle) {
                    return `${title} ${model.modelType.getClassSettings().toTitle(model)}`;
                }
                return `${title} ${model.primaryKey}`
            }
            return title;
        }), delay(0));
    }

    getModelTitle(model: BaseModel | ModelType): Observable<string> {
        return of('test');
    }
}

当我删除延迟时,它工作得很好,标题正确返回。但是,当我添加此delay(0)时,transform方法将返回null。

由于ExpressionChangedAfterItHasBeenCheckedError,我不得不使用延迟。

为什么delay管道返回空值?

编辑:

这是我消耗管道的方式:

{{model | toTitle | async}}

当我尝试使用(model | toTitle | async) === null时,它将在模板上返回true

0 个答案:

没有答案