2017-02-17 47 views
0

我有一个数据传递给孩子的问题。 Excatly在此plunker:如何让孩子看到父变量变化

http://plnkr.co/edit/G1EgZ6kQh9rMk3MMtRwA?p=preview

@Component({ 
    selector: 'my-app', 
    template: ` 
    <input #x /> 

    <br /> 
    <child [value]="variable"></child> 

    <button (click)='test(x.value)'>Button</button> 
    `, 
    directives: [ ChildComponent ] 
}) 
export class AppComponent { 
    public variable; 


    test (x:any){ 
    console.log('test',x); 
    this.variable = x; 
    } 

} 

这是我的主要成分当我改变的变量。

我给变量赋了一个输入值,这个变量通过输入传递给孩子,孩子应该得到变量的新值。 但它没有发生。 有谁知道我的错误在哪里?

回答

1

我想你想通过<input>而不是<input>元素本身的价值。

<child [value]="x.value"></child> 

Plunker example

+0

我改变了我的plunker。我的意思是当函数改变父组件中的私有或局部变量为什么子组件不会改变值? –

+0

我认为它的确如此。你为什么认为它不?我需要采取什么确切步骤来重现您想要解决的问题? –

+0

我无法显示代码,因为它来自我的工作。 所以我有一个数组在主要组件,我将这个数组传递给孩子。当我初始化它时,这个变量上的信息记录了我的变化。 之后,当我推一个对象数组儿童setter不记录我一个变化 –

0

你plunker代码似乎很好地工作。我能看到的结果只是通过修改@input财产,只是这样的:

@Input() value;