[解決済み】Angular 2 チェックボックスの双方向データバインディング
2022-04-01 13:37:38
質問
私はAngular2の初心者なのですが、ちょっとした問題があります。
Login-Component-HTMLに、2つのチェックボックスがあり、Login-Component-TypeScriptに2通りのデータバインディングでバインドしたい。
これがその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']);
}
チェックボックスをクリックすると、コントローラ(コンポーネント)に正しい値が表示されます。
しかし、例えば
saveUsername
を使用すると、チェックボックスは新しい値を取得できませんでした。
そのため、コンポーネントからチェックボックスを操作することができません。
ngOnInit
をコンポーネント内で使用します。
ありがとうございました。
解決方法は?
を削除することができます。
.selected
から
saveUsername
はブール値であるため、チェックボックスの入力に使用することができます。代わりに
[(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
関連
-
[解決済み】iframeの背景色を変更する問題
-
[解決済み】iframeの高さを100%にする方法【重複】。
-
[解決済み] HTML5 Validation Error: body start tag が見えたが、同じタイプの要素がすでに開かれていた
-
[解決済み] 以下のHTMLフォームの例で、「mailto:[email protected]」とは何ですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み] Angular HTMLバインディング
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】チェックボックスがチェックされているかどうかをjQueryで確認する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTML5検証エラー:body開始タグは見たが、同じタイプの要素がすでに開かれていた
-
[解決済み】「選択されたファイルがありません」を変更しました。
-
[解決済み] 絶対位置が機能しない
-
[解決済み] CSSでulのインデントを削除する
-
[解決済み] ホバー時に背景画像を暗くする
-
[解決済み] 順序なしリストが div 内で左いっぱいに整列されない
-
[解決済み] margin-block-startとmargin-topの違いは何ですか?
-
[解決済み] Visual Studio Code CSSエラー「空のルールセットを使用しないでください」【終了しました
-
[解決済み] フロートされた子 div の高さを親の高さに拡張するにはどうすればよいですか?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。