2016-09-07 11 views
0

これはおそらく単純なエラーですが、自分では理解できません。子コンポーネントのプロパティは変更されません

子コンポーネントが内部にある親コンポーネントがあるとします。この子コンポーネントは、次のプロパティがあります。

private n : Number = 0; 

と方法:

そう
plusOne(){ 
    this.n += 1; 
} 

、我々は場合は1 で「N」プロパティの増加、それ値「プラスワン」メソッドを呼び出すたびに私は子コンポーネントの内部からこのメソッドを呼び出すだけですべてうまく動作します。 問題は、(ViewChildを使用して)親コンポーネントからメソッドを呼び出すときにプロパティが値を変更しないことです。実際には、console.logを使用してメソッドが正常に呼び出されたことを確認し、メソッドのライフサイクル中にプロパティが値を変更しました。

は後でトラブルシューティングでは、私はその後、直接

this.child.n = 1; 

親コンポーネントからそれにアクセスしようとしましたが、プロパティがまだ変更されません

public n : Number = 0; 

にプロパティを変更しました。

+0

これはJavaScriptのようには見えません... –

答えて

1
あなたは以下試すこと

続きを読む程度parent - child interaction using ViewChild here

import { Component, OnDestroy, OnInit } from '@angular/core'; 
import { AfterViewInit, ViewChild } from '@angular/core'; 

@Component({ 
    selector: 'child-component', 
    template: '<p>{{num}}</p>' 
}) 
export class ChildComponent implements OnInit, OnDestroy { 
    num = 0; 
} 

@Component({ 
    selector: 'my-app', 
    template: `<h1>My First Angular 2 App</h1> 
    <button (click)="updateChild()" >Update child NUM</button> 
    <child-component></child-component> 
    ` 
}) 
export class AppComponent { 
    @ViewChild(ChildComponent) 
    private childComponent: ChildComponent; 

    updateChild(){ 
    this.childComponent.num +=1; 
    } 
} 

ここでは、このことができますPlunker!!

希望です!

+0

ありがとうございます!私は問題を解決する。私は間違ったテンプレートにスタイルを割り当てていました。私はあなたのプランカで少し演奏した後にそれを実現する!おかげで – Kiddo

+0

喜んでそれは助け..乾杯! –

+0

あなたはその答えを受け入れるかもしれません。 –

関連する問題