当前位置:  开发笔记 > 前端 > 正文

如何在Angular2中将observable中的值传递给(click)处理程序

如何解决《如何在Angular2中将observable中的值传递给(click)处理程序》经验,为你挑选了1个好方法。

我尝试用Angular 2学习可观察的编程但是我没有得到一个重要的观点 - 如何在模板级别的(click)事件中传入一个observable中的值(没有在TS文件中订阅observable和将可观察值转换为成员变量).

正如许多Firebase专家所说的那样"尽可能在angular2中使用| async并防止手动订阅!" - 不想手动订阅任务$并将其转换为数组的原因.

例如:

我在组件的TS文件中有这个:

task$: Observable;

this.task$ = this.tasksService.findTaskById(taskId);

在我的服务中,这是使用AngularFire调用firebase的代码,它返回一个observable:

import {Task} from "../model/task";
constructor(private db:AngularFireDatabase, @Inject(FirebaseRef) fb) {
   this.sdkDb = fb.database().ref();
}

findTaskById(id:string):Observable {

  return this.db.object('tasks/' + id).map(task => Task.fromJson(task));

}

在我的模板中,我可以使用异步管道在Angular2中使用没有问题的值,如下所示:

{{(task$ | async)?.title}}

但是我有一个按钮,需要在这个任务中的$ id值,如下所示:


这不会起作用,因为click不允许在表达式中使用管道......而且我不想订阅任务$并将其转换为成员变量(最佳做法是保持任务$ for obserable style RXJS编程?!)

那么我如何得到$ key值,因为它最初不存在,我不能使用异步管道!?



1> Matthew Mari..:

对于向任何事物(不仅仅是a)添加点击处理程序的一般情况

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有