如何将数据从一个组件传递到另一个

时间:2019-07-31 04:49:23

标签: javascript node.js angular typescript rxjs

我是一个新的项目人员,我的问题是我想将数据从一个组件传输到另一个组件。实际上,我想在数据库的文本字段中显示数据,然后必须对其进行更新。我有一个组件名称ricerca.component.ts,其中显示了表中的数据。现在,当我单击特定行(行)时,该特定记录的数据就必须在我的其他组件名称中显示为generatecontract.comonent.ts。我不知道该怎么做。

我使模型名称为ContractDblist,将所有这些值分配给该模型,但不幸的是没有解决其他组件中的问题

这是我的ricercacomponnet代码

    if(tag === 'Item1'){      
 this.router.navigate(['/workflow/rigester' ]);
}
}
  public lstContractRecordDbValue :any[];
  getContractRecordbyParameter(selecteditem: any, index: number) {    this.workFlowService.getContractRecordbyParameter(selecteditem).subscribe(data => {      
      this.lstContractRecordDbValue = data;     
      this.contractdblist.cnt_num=this.lstContractRecordDbValue[0].CNT_NUM;
      this.contractdblist.contract=this.lstContractRecordDbValue[0].CONTRACT;      this.contractdblist.contacttype=this.lstContractRecordDbValue[0].CONTRACT_TYPE;      this.contractdblist.contractno=this.lstContractRecordDbValue[0].CONTRACT_NO;     
      this.loading = false;
    }, error => {
      console.error('getAllTickets', error);
      this.loading = false;
    })
  }

2 个答案:

答案 0 :(得分:1)

您可以使用“主题”来完成

import { Injectable } from "@angular/core";
import { Subject } from "rxjs";

@Injectable()
export class MessageService {
    private subject = new Subject<any>();

    constructor() {}

    sendMessage(message: any) {
        this.subject.next(message);
    }

    getData() {
        return this.subject.asObservable();
    }
}

因此您可以调用MessageService类方法sendMessage()来发送数据

我在这里定义了2种方法。第一种使用next()将消息发送到下一个订阅者的方法。因此,在您的组件中,您只需要像这样简单地订阅即可获取数据

private subscription$: Subscription;

public ngOnInit(): void {
  this.subscription$ = this.messageervice
            .getData()
            .subscribe(data => { console.log(data); })
}

public ngOnDestroy(): void {
    this.subscription$.unsubscribe();
}

答案 1 :(得分:0)

有很多方法可以做到其中一些

  1. 将数据从父组件传递到子组件时使用输入修饰符。
  2. 将数据从子组件传递到父组件时,将输出装饰器与事件发射器一起使用。
  3. 将主题用于彼此无关的组件。
  4. 使用服务来设置和获取要传递的数据。

您可以通过上述所有方式访问其官方网站。