[解決済み] Angular2: [(ngModel)] with [ngModelOptions]="{standalone: true}"を使って、モデルのプロパティへの参照にリンクさせる。
質問
例えば、以下のようなMailtype型のtypescriptオブジェクトがあるとします。
export class Mailtype {
constructor(
public name?: string,
public locale?: string,
public email?: string,
public properties? : Property[]
) { }
}
ここで、その "properties" フィールドは、Property 型の配列である。
export class Property {
constructor(
public name?: string,
public type?: string,
public example?: string,
public required?: boolean,
public masked?: boolean
) { }
}
このコンポーネントには Mailtype オブジェクトが 1 つあり、html には Mailtype のプロパティ配列を編集したり追加したりするための form 要素があります。
<form>
<tr *ngFor="let property of model.properties; let i=index">
<td>
<input type="text" [(ngModel)]="property.name" required>
</td>
</tr>
<button (click)="onAddProperty()">Add property</button>
</form>
コンポーネントを使用します。
export class MailtypeComponent {
model : Mailtype;
constructor() {
this.model = new Mailtype('','','',[]);
this.model.properties.push(new Property());
}
onAddProperty() {
this.model.properties.push(new Property());
}
}
私は、[(ngModel)]を使用して、配列内の配列要素への参照 "プロパティ"にリンクすることは、特に私が配列を反復するのと同時に許されないのでしょうか。 なぜなら、上記のコードに対して以下のエラーを投げるからです。
ORIGINAL EXCEPTION: If ngModel is used within a form tag, either the name attribute must be set
or the form control must be defined as 'standalone' in ngModelOptions.
Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
つまり
[ngModelOptions]="{standalone: true}"
またはhtmlに名前フィールドを追加してください。そして、見た目は
[ngModelOptions]="{standalone: true}"
はこの場合、動作します。では
standalone: true
それについてのドキュメントが見つからないので、実際にどういう意味なのでしょうか?
どのように解決するのですか?
使用方法
@angular/forms
を使用する場合
<form>
タグは自動的に
FormGroup
.
含まれるすべての
ngModel
タグ付き
<input>
を作成します。
FormControl
に追加し、それを
FormGroup
上で作成されたこの
FormControl
は
FormGroup
属性を使って
name
.
例
<form #f="ngForm">
<input type="text" [(ngModel)]="firstFieldVariable" name="firstField">
<span>{{ f.controls['firstField']?.value }}</span>
</form>
このように言うと、質問の答えは次のようになります。
としてマークした場合
standalone: true
に追加されることはありません。
FormGroup
).
参考 https://github.com/angular/angular/issues/9230#issuecomment-228116474
関連
-
[解決済み】Angular2 CLI エラー "@angular/compiler-cli" パッケージが正しくインストールされていません。
-
[解決済み] Angular 5:"ControlContainerのプロバイダがありません"
-
[解決済み] Visual Code で未定義のプロパティ 'thisCompilation' を読み取ることができません。
-
[解決済み] Angular2 Final Release - 「Error: AngularにはZone.jsのプロリフィルが必要です"
-
[解決済み] Electron - ローカルリソースのロードが許可されていません
-
[解決済み] Angular 2 ルーターベースなし href = "/stock/stock_detail.html?
-
[解決済み] プロパティ 'json' はタイプ 'Object' に存在しません。
-
[解決済み] "rxjs" observable.throw は関数ではありません - Angular4
-
[解決済み] Angular 6 Error trying to diff '[object Object]'. 配列と反復記号のみが許可されます。
-
[解決済み] Angular 2 : NgModule のメタデータが見つかりません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angular2 CLI エラー "@angular/compiler-cli" パッケージが正しくインストールされていません。
-
[解決済み】本番モードを有効にするには?
-
[解決済み] Angular EXCEPTION: Http用のプロバイダがありません。
-
[解決済み] Angular "未定義のプロパティ 'subscribe' を読み取ることができません".
-
[解決済み] FormBuilder のプロバイダがない [重複] 。
-
[解決済み] Uncaught (in promise): Ionic 2でcordova_not_available。
-
[解決済み] typescriptを使用して、同じhtml DOM要素で「シングルクリック」と「ダブルクリック」を処理する方法:Angular 2または4?
-
[解決済み] switchの使用時に「ステートメントはif文でフィルタリングされなければならない」というtslintのクレームが発生する。
-
[解決済み] モジュール "ionic-native" が見つかりません。
-
[解決済み] Angularアプリのシンタックスエラー。予期しないトークン <