angular - 当它的组件被隐藏时,输入值会被清除,但我不想这样做。我该如何解决?
问题描述
当我切换输入子组件的可见性时,他的值会清除,并且我添加的所有表单组件都会发生这种情况。我该如何解决?
我的输入子组件.html
<mat-form-field>
<mat-label>{{ title }}</mat-label>
<input
[formControl]="control"
[readonly]="!isVisible"
[type]="type"/>
</mat-form-field>
输入.ts
export class InputComponent implements OnInit {
@Input() title: string;
@Input() isVisible: boolean;
@Input() control: FormControl;
@Input() type: 'text' | 'number';
}
父表单组件
<div
[formGroup]="form">
<app-input
[control]="form.get('input')"
[isVisible]="isVisible"
type="text"
title="Example title">
</app-input>
</div>
表单组件.ts
export class IfaceFormComponent implements OnInit {
@Input() isVisible: boolean;
form: FormGroup = this.fb.group({
input: this.fb.control('')
});
constructor(
private fb: FormBuilder,
) { }
}
还有我的卡片组件,我在其中导入表单组件
<mat-card>
<div>
<button (click)="toggleVisibiltyMode()">
<mat-icon>mode_edit</mat-icon>
</button>
</div>
<mat-card-content
(click)="toggleViewMode()">
<app-form *ngIf="!isCompactView" [isVisible]="isVisible"></app-form>
</mat-card-content>
</mat-card>
卡片组件.ts
export class WanCardComponent implements OnInit {
@Input() index: number;
isVisible = false;
isCompactView = false;
toggleViewMode(): void {
if (!this.isVisible) {
this.isCompactView = !this.isCompactView;
}
}
toggleVisibilityMode(): void {
this.isVisible = !this.isVisible;
if (this.isCompactView) {
this.isCompactView = !this.isCompactView;
}
}
}
解决方案
推荐阅读
- kotlin - Kotlin 反序列化任何不支持的类型
- php - 我无法将ang字符串值传递给数组
- ios - Xcode 和 Cocoapods 警告中的 EMBEDDED_CONTENT_CONTAINS_SWIFT
- angular - 比多个 ngIf 更好的方法
- swift - scnScene.write 不将场景写入 .scn 文件
- java - maven 部署文件丢失/无效文件和/或 url
- postgresql - 使用来自 VALUES 表达式的输入更新列,而无需显式类型转换
- asp.net-core - 在 Xss 攻击中抛出异常
- arrays - 如何创建一个循环来为类实例数组的每个特征随机分配值
- python - 如何根据主文档 id 匹配 mongodb 子数组?