为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用异步管道而不是使用订阅?

如何使用异步管道而不是使用订阅?

慕神8447489 2023-02-24 17:40:19
我想使用异步管道“|异步”而不是订阅。这是我的订阅代码目前的样子:ngOnInit(): void {  this.activatedRoute.url    .pipe(takeUntil(this.unsubscribe$))      .subscribe(segments => {        this.quizName = segments[1].toString();      });}在我的模板中,我有:<mat-card *ngIf="quiz.quizId === quizName">
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

让我们试试这个:


quizName$: Observable<any>;


ngOnInit(): void {

  this.quizName$ = this.activatedRoute.url

    .pipe(

      takeUntil(this.unsubscribe$),

      map(segments => segments[1].toString()); // Not sure about this part

    );

}

<mat-card *ngIf="(quizName$ | async) === quiz.quizId">

请注意,每次您在模板中使用异步管道时,它都会进行订阅。


查看完整回答
反对 回复 2023-02-24
?
UYOU

TA贡献1878条经验 获得超4个赞

添加变量:


quizName$ = this.activatedRoute.url.pipe(map(segments => segments[1].toString()));

不需要takeUntil诸如“| async”之类的就可以了

可选(您的 IDE 会自己知道)

quizName$: Observable<string> ...

在 HTML 中:


*ngIf="(quizName$ | async) === quiz.quizId"

更“稳健”的解决方案


showQuiz$: Observable<boolean> = this.activatedRoute.url.pipe(

  map(segments => segments[1].toString()),

  map(quizName => quizName === this.quiz && this.quiz.id)

);

*ngIf="showQuiz$ | async"


查看完整回答
反对 回复 2023-02-24
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信