【发布时间】:2018-07-24 10:56:36
【问题描述】:
下面是我非常精简的代码。
app.component.html
<app-nav></app-nav>
<app-login *ngIf="!loggedIn"></app-login>
app.component.ts
loggedIn: boolean;
...
//Shared service login logic - this stuff works
loggedIn = true;
loggedIn = false;
login.component.ts
email: string;
pass: string;
Login(){
//Shared service login logic - passes in this.email and this.pass
//unset password but keep email
}
login.component.html
<input type="email" required [(ngModel)]="email" />
<input type="password" required [(ngModel)]="pass" />
<button type="submit" (click)="Login()">Sign In</button>
我的代码运行良好,而且大部分都符合预期。当用户未登录时,<app-login> 组件不可见,反之亦然。但是,我打算只取消设置login.component.ts 中的密码,因为电子邮件<input> 使用ngModel 绑定到email,我认为它会被保留。
然而,当一个模型被解构并从 DOM 中移除时,似乎所有的局部变量也都没有设置。我能做些什么来防止这种情况发生?
【问题讨论】:
-
您必须将数据存储在其他地方。即使保留它也不可靠,因为用户可以刷新页面并允许它在刷新下表现不同,这在 SPA 设计中是不合适的
-
请注意,
[(ngModel)]在属性组件上的属性和它从未附加到任何其他内容的 HTML Dom 之间保持状态同步
标签: angular typescript angular2-directives