【发布时间】:2020-12-06 03:50:30
【问题描述】:
我对 Angular 很陌生,我真的很难找到一个简洁的答案来解决这个问题。我在这里有一个表单组件:
(我排除了指令和导入,因为它们并不真正相关)
export class JournalFormComponent implements OnInit {
public entries: EntriesService;
constructor(entries: EntriesService) {
this.entries = entries;
}
ngOnInit(): void {
}
}
EntriesService 服务只存储一组条目:
export class Entry {
constructor (
public num: number,
public name: string,
public description: string,
public text: string
) { }
}
表单组件模板为EntriesService 中的每个条目呈现一个<h2> 和一个<app-input> 组件,这是有效的。看起来像这样:
<div *ngFor="let entry of entries.entries">
<h2> {{ entry.num }}. {{ entry.name }} </h2>
<app-input id="{{entry.num}}"></app-input>
</div>
这是<app-input> 输入组件:
@Component({
selector: 'app-input',
template: `
<textarea #box
(keyup.enter)="update(box.value)"
(blur)="update(box.value)">
</textarea>
`
})
export class InputComponent {
private value = '';
update(value: string) {
this.value = value;
}
getValue () {
return this.value;
}
}
InputComponent 完美地存储了用户的文本,但我不知道如何将该数据传递给表单组件的EntriesService 以更新条目以便稍后导出或保存。这是怎么做到的?
我认为这个问题的措辞很好,但我不确定。如果您需要澄清,我会提供。
不确定是否重要,但我使用的是 Angular 9.1.11
【问题讨论】:
-
Angular 文档是组件间通信的最佳信息来源。具体来说:angular.io/guide/…
-
只需将表单数据设置为服务中的新变量:
this.entries.savedData = this.value并稍后使用。 -
在将 InputComponent 调用事件发射器中的值保存到 JournalFormComponent angular.io/guide/inputs-outputs时,您可以在此处使用@Output 事件发射器
标签: javascript angular typescript components