问题标签 [ng-submit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
159 浏览

angular - Angular - 在一个组件中提交表单以触发单独不相关组件中的操作

在这个问题之前,我提出了这个问题。基本上,我试图做到这一点,因此当提交单独组件中的表单时,它会创建一个组件的新实例,其中传入的值来自该组件实例上显示的表单。这些组件是在我将数据添加到app.component.ts中的数组时创建的。

多亏了一个答案,我现在确实可以使用它,但是现在我正在尝试这样做,以便在提交不同组件中的表单时创建这些组件。

当表单中的数据添加到 app.component.ts中的数组时,它会创建这些组件实例之一,但我只希望在通过单独组件中的 ngSubmit 提交表单时发生这种情况,即add-status-box .component.ts

添加状态框.component.html:

添加状态框.component.ts:

app.component.ts:

状态框.service.ts

当我在add-status-box.component.ts中调用附加到表单 ngSubmit的addStatusBox()时,名称字段输入通过 changeMes​​sage 函数传递给 StatusBoxService。

然后在 app.component.ts 的ngInit ()函数中,我们订阅 StatusBoxService 并从表单中检索传入的名称值。然后将其分配给 name 属性。

最后,我们将该名称添加到 myNames 数组中,但是我希望仅当我在add-status-box.component.ts中提交相同的表单时才发生将项目添加到数组中的关键步骤。因为正如你现在所看到的,我在 oninit() 期间将项目添加到这个数组中。

我确实找到了这个,似乎 ngSubmit 是一个 EventEmitter。看起来你可以订阅 EventEmitters。因此,我可以在app.component.ts中的app-status-box.component.ts订阅 ngSubmit,这样我只在 ngSubmit 发生时才将项目添加到数组中。

我不确定这是否正确,如果正确,我不确定我将如何实现它。我之前从 StatusBoxService 检索名称值时使用过 subscibe,所以也许我可以做一些类似的事情?

任何帮助,将不胜感激。