我使用ng-bootstrap创建3个选项卡,每个选项卡是共同父组件内的单独组件。每个子组件包含多个文本输入,当我在子组件之间切换时,输入文本值消失。切换标签时如何保留所有输入值?
答案 0 :(得分:4)
您可以使用NgbTabset的destroyOnHide
属性。
用法:
<ngb-tabset [destroyOnHide]="false">
<ngb-tab>
<ng-template ngbTabTitle>
<div>Title 1</div>
</ng-template>
<ng-template ngbTabContent>
<!-- Component One-->
</ng-template>
</ngb-tab>
<ngb-tab>
<ng-template ngbTabTitle>
<div>Title 2</div>
</ng-template>
<ng-template ngbTabContent>
<!-- Component two-->
</ng-template>
</ngb-tab>
<ngb-tabset>
答案 1 :(得分:2)
您可以构建服务以保留值。
像这样简单的事情会:
import { Injectable } from '@angular/core';
@Injectable()
export class InputService {
lastName: string;
firstName: string;
constructor() { }
}
只需将此服务注入三个选项卡组件中的每一个。然后,他们可以将值设置到服务中并从服务中读取值。
答案 2 :(得分:0)
您需要在某处存储值,当您更改Tab时,DOM会刷新,因此您会丢失输入。
创建一个对象来保存数据并在路径参数中传递对象以始终保留它。
或者您可以使用localStorage保存对象并在ngInit方法上获取它。
答案 3 :(得分:0)
您可以将您的值存储在服务中,然后通过ngOnInit()
方法回读,也可以使用localStorage
显示here来回读lifecycle中的结果{1}}方法,您在ngOnInit()
方法中保存的结果。这里有必要对这些https://regex101.com/r/NJlcrN/1方法进行一些了解。