当async管道引用对象是可变的(如Observable或Promise)时,它可能引起无限循环,并最终导致应用程序崩溃。要解决这个问题,可以使用一种名为“async管道引用”的技术,它确保每个值只被订阅一次。以下是使用该技术的示例代码:
@Component({
selector: 'app-example',
template: `
{{item}}
`
})
export class ExampleComponent {
items$: Observable;
constructor(private someService: SomeService) {
this.items$ = this.someService.getItems();
}
}
@Pipe({
name: 'asyncRef'
})
export class AsyncRefPipe implements PipeTransform {
private subscription: Subscription;
transform(value: Observable): Observable {
if (!this.subscription) {
this.subscription = value.subscribe();
}
return value;
}
}