【发布时间】:2019-09-12 00:32:03
【问题描述】:
我有一个对象,我正在尝试设置(最终)编辑该对象中每个键值的能力,方法是打开一个带有切换的表单并通过一个小表单编辑该属性。
我尝试过使用密钥管道,但每个 k:v 的数据结构不同,因为不同的表有很多相关的东西。我应用了这个,认为我可以索引 k:v 并因此根据它的索引打开每个。也许我应该更多地研究这个?
首先,我需要让切换开关(*ngIf"=show_form" | openForm()) 工作,就像目前我单击一个按钮来显示 k:v 一样,所有按钮都会打开,因为条件设置为全线为真。
这是 HTML 的简化视图:
<li>App Body Font Family:</li>
<ul>
<li>{{ config.body_font.data.font_family }}<li>
<li><button (click)="openForm('body)">{{ button_text }}</button>
<ng-container *ngIf="show_form">
<li *ngIf="fonts">
<span *ngFor="let font of fonts">
{{ font.font_family }}//form will live here eventually as a select dropdown
</span>
</li>
</ng-container>
</ul>
<li>App Headings Font Family:</li>
<ul>
<li>{{ config.header_font.data.font_family }}<li>
<li><button (click)="openForm('header')">{{ button_text }}</button>
<ng-container *ngIf="show_form">
<li *ngIf="fonts">
<span *ngFor="let font of fonts">
{{ font.font_family }}//form will live here eventually as a select dropdown
</span>
</li>
</ng-container>
</ul>
component.ts
public show_form: any = {
body: false,
header: false
}
public openForm(key: any) {
this.show_form[key] = !this.show_form[key]
}
如您所见,单击按钮时show_form 将设置为 true,因此当前两个部分都打开和关闭,而不仅仅是我单击的那个。
我正在遭受一点开发倦怠的折磨,所以对于一个更清晰的头脑来说,问题可能非常明显。谁能指出我正确的方向?
【问题讨论】:
-
您将需要跟踪要显示的表单,您可以通过
k完成 -
我有一种感觉,可能需要发生。我目前只是在没有 *ngFor 循环的情况下绑定对象。我需要重新编写它以从对象键绑定而不是按原样绑定。或者你认为这可以在没有循环的情况下完成?
-
这取决于您要绑定的对象数量以及您想要完成的工作量。归根结底,您只需要一个单一的视图模型属性来保存要显示的表单。如果您的对象中的任何值与该值匹配,则显示您的表单。您无需维护对象或数组即可执行此操作。
标签: angular