代码之家  ›  专栏  ›  技术社区  ›  user2800089

如何订阅角度2动态形式的值

  •  0
  • user2800089  · 技术社区  · 9 年前

    我将值从一个组件传递到另一个具有动态形式的组件,但在该组件中,没有收到值。如果我在将值传递给动态表单时做错了什么,或者这不是动态表单可以接收值的方式,我就不会明白。

    我没有粘贴整个代码,否则它会太大,所以我只提到了相关的代码片段。如果需要进一步澄清,请告诉我。

    在AdminService中,这是服务类,其中主题定义如下:

    startedEditingItem=new Subject<string>();    
    

    在ProductItemsComponent中,值按如下方式发送到另一个组件。

    onEdit(index:number){
        console.log("on edit"+this.productId+":"+this.childProductId+":"+index)// This is being printed , so value is sent
        this.adminService.startedEditingItem.next(this.productId+":"+this.childProductId+":"+index);}
    

    在ItemEditComponent中,值订阅如下

    ngOnInit() {
        console.log("edit item on init") // printed on console
        this.subscription=this.adminService.startedEditingItem.subscribe(
          (id:string)=>{
            console.log("edit item>"+id); // not printed on console.so value is not received
            this.initForm();});
        this.initForm();}
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   DeborahK    9 年前

    你真的需要一个 Subject 在这里您可以使用简单的服务更轻松地进行通信,而无需使用 .例如:

    import { Injectable } from '@angular/core';
    
    @Injectable() 
    export class DataService {
      serviceData: string; 
    }
    

    您可以在此处找到更多详细信息: https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

    https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview

    推荐文章