2017-09-03 10 views
1

ngModel内の3者if文を使用しようとしています。[(ngModel)]内のternary if文は使用できません

<input [(ngModel)]="(mode == 'edit') ? userToUpdate.name_first : newUser.name_first" id="name_first" class="form-control" type="text"> 

式 (mode == 'edit')? userToUpdate.name_first:newUser.name_first はnewUser.name_firstにのみモデルをバインドしますが、モデルをuserToUpdate.name_firstにバインドしません。ここで

は、私はステートメントを使用しようとした場所である: https://github.com/alex-chaliy/TeamManager/blob/master/client/src/app/home/home.component.html#L43

+0

この条件はどのような状況で実行されますか – Aravind

+0

これは、テンプレートではなくコードに適したもののようです。 –

+0

ngModelはコンポーネントのフィールド名のみを受け入れるため、計算する式を渡すことはできません。 – slesh

答えて

0

私は両方のモードで 'userToWrite'変数を使用して問題を修正しました。

0

それが動作するようになっているどのように?この表現は意味をなさない。入力値が更新されると、Angularはモデルのどの値を更新する必要があるのか​​を理解していますか?代わりにgetter/setterを使用してください。

get firstName(): string { 
    return (mode == 'edit') ? this.userToUpdate.name_first : this.newUser.name_first; 
} 
set firstName(val: string) { 
    if(mode === 'edit') this.userToUpdate.name_first = val; 
    else this.newUser.name_first = val; 
} 

PS。あなたのコンポーネントがユーザーが新しいかどうかを知る必要があるという事実は、デザインが悪いと私に伝えているので、私はあなたに与えた解決策が本当に好きではありません。上のコンポーネントからコンポーネントへの入力パラメータとして受け取り、上位のコンポーネントが既存のユーザーオブジェクトまたは新しい空のコンポーネントのいずれかを渡すようにしてください。

関連する問題