亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用異步管道而不是使用訂閱?

如何使用異步管道而不是使用訂閱?

慕神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 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號