gpt4 book ai didi

html - Angular 2复选框双向数据绑定(bind)

转载 作者:IT老高 更新时间:2023-10-28 11:10:06 25 4
gpt4 key购买 nike

我对 Angular2 还很陌生,但遇到了一个小问题:

在我的 Login-Component-HTML 中,我有两个复选框,我想以两种方式将它们绑定(bind)到 Login-Component-TypeScript。

这是 HTML:

<div class="checkbox">
<label>
<input #saveUsername [(ngModel)]="saveUsername.selected" type="checkbox" data-toggle="toggle">Save username
</label>
</div>

这是 Component.ts:

import { Component, OnInit }    from '@angular/core';
import { Router } from '@angular/router';
import { Variables } from '../../services/variables';

@Component({
selector: 'login',
moduleId: module.id,
templateUrl: 'login.component.html',
styleUrls: ['login.component.css']
})


export class LoginComponent implements OnInit {

private saveUsername: boolean = true;
private autoLogin: boolean = true;
constructor(private router: Router, private variables: Variables) { }

ngOnInit() {
this.loginValid = false;
// Get user name from local storage if you want to save

if (window.localStorage.getItem("username") === null) {
this.saveUsername = true;
this.autoLogin = true;
console.log(this.saveUsername, this.autoLogin);
} else {
console.log("init", window.localStorage.getItem("username"));
}
}

login(username: string, password: string, saveUsername: boolean, autoLogin: boolean) {
this.variables.setUsername(username);
this.variables.setPassword(password);
this.variables.setIsLoggedIn(true);
console.log(saveUsername, autoLogin);
//this.router.navigate(['dashboard']);
}

如果我点击一个复选框,我会在 Controller (组件)中得到正确的值。

但如果我在组件中更改例如 saveUsername 的值,复选框不会“获取”新值。

所以我不能从组件中操作复选框(就像我想在组件的 ngOnInit 中做的那样。

感谢您的帮助!

最佳答案

您可以在复选框输入中从 saveUsername 中删除 .selected,因为 saveUsername 是一个 bool 值。而不是 [(ngModel)] 使用 [checked]="saveUsername"(change)="saveUsername = !saveUsername"

编辑:正确的解决方案:

<input
type="checkbox"
[checked]="saveUsername"
(change)="saveUsername = !saveUsername"/>

更新: 就像@newman 注意到的那样,当 ngModel 以一种无法工作的形式使用时。但是,您应该使用 [ngModelOptions] 属性,例如(在 Angular 7 中测试):

<input
type="checkbox"
[(ngModel)]="saveUsername"
[ngModelOptions]="{standalone: true}"/> `

我还在 Stackblitz 创建了一个示例:https://stackblitz.com/edit/angular-abelrm

关于html - Angular 2复选框双向数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40214655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com