2017-12-19 14 views
0

私はオブジェクトを持っているとしましょう。ビュー内のオブジェクトプロパティを読み込んでいます。 これは私のサービスではありroleと呼ばれるオブジェクトのプロパティである、と私は私のコンポーネントへの私の見解から、その値を送りたい、私は私のコンポーネントでその値を持ついくつかの作業を行う必要があります...ビュー内の非表示要素の値を設定してコンポーネントに送信する角度2

import { Injectable } from '@angular/core'; 

@Injectable() 
export class Globals { 
    role: string = 'test role'; 
} 

そして、これは私のコンポーネントです:

import { Component } from '@angular/core'  
import { Globals } from './globals' 

@Component({ 
    selector: 'component2', 
    template: ` 
    <div>   
<input [(ngModel)]="role"/> 
     <button (click)="changedRole()">apply</button> 
    </div>` 
}) 
export class Component2 { 
    private role: string; 

    constructor(private globals: Globals) { 
     this.role = globals.role; 
    } 

    private changedRole() { 
     this.globals.role = this.role; 
    } 
} 

、いくつかのものがあり、それは私が隠し入力に推測良いだろうので、私は、role値表示に興味がないんだけど、私はそのngModel dを読んだ目標は双方向のデータバインディングなので、非表示のフィールドで作業する必要はありません。この場合、オブジェクトの値をroleに設定して入力(または任意のタイプのタグ)の値を設定し、私が角度1で読んだコンポーネントは、ビューからコンポーネントへの一方向のデータバインディングのためだけに、値が存在します。私はアングル4で作業していますが、これに対処する方法はわかりません。<input [(ngModel)]="role" value="{{myobject.role}}"/>のように試しましたが、もちろん動作しませんngModelどのようにしてオブジェクトのプロパティ値をビューから成分?

+0

なぜ隠れた入力を入れたいのですか? this.globals.roleを使用して常に値を取得できます – Eliseo

答えて

1

あなたは私はあなたが何をしようとして理解してはかなりよく分からないが、あなたはよく

<input (change)="role = $event.value" [value]="role" /> 
-1

をバインドする[value]を使用することができます、より読み、あなたの答えに触発された私は、コンポーネントにビューからデータバインディングについてpluralsightでの素敵な動画を見つけました。私は自分のhtmlでこれをやってしまった:

<a (click)="select(person.role)">{{person.Title}}</a> 

そして、私のコンポーネントで、私はちょうどこのメソッドを追加しました:

select(role: string) { 
     console.log('the role selected was: ' + role); 
    } 

それは働きました。

0

と呼ばれる結合事象を使用することができます値

<input [value]="role" type="hidden" /> 
関連する問題