将对象按角度推到工作台组件

时间:2019-02-26 05:32:50

标签: angular typescript angular-material angular6

场景::我有2个API,分别称为docker run --rm -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -help customers,我正在使用显示我的所有workers及其customers表格在名为assigned workers的组件中,如下图所示:

enter image description here

当我单击特定客户 edit 按钮时,我正在将该特定客户对象(“ Ex Customer 1”)值注入另一个名为 edit(对话框组件),我将在其中显示注入的customers属性customer(name,email)中。如下图所示:

enter image description here

如第二幅图所示,我在 edit 组件内放置了另一个组件(workers-list),该组件将在下拉列表中显示所有工作者:

enter image description here

预期结果:

  • 现在,我要从assigned worker properties(name,email,phone)组件中将选择的工作人员强行推送到workers-list组件中的表中,如下所示:

enter image description here

图片:editWorker 2中选择,并通过单击dropdown按钮添加到edit组件的中。

  • 它不应添加重复项。
  

我在Add组件中收到emitted workers,但是我无法验证重复,也无法edit 新员工 >转到push

由于组件很多,我给了 stackblitz link

1 个答案:

答案 0 :(得分:1)

请输入look。 要重新渲染表,您需要创建一个像这样的新数组:

this.customerWorkers = [...this.customerWorkers, ...value];

要跳过空值(而不将其添加到表中),可以对以下主题使用过滤器:

this.dataService.onSelectWokers.pipe(
     filter(x => x)
   )

此外,您还需要在将工作人员推向服务之前对其进行映射,例如:

const workersMap = this.addForm.value.workerIds;
const workersArray = Object.keys(workersMap).map(x => workersMap[x]);

希望有帮助。