2017-02-02 6 views
3

anglejs 2の新機能で、@viewChildを使用する必要がありますが、''未定義の 'rotateLeft'プロパティを読み取れません。というエラーがスローされます。 親:Angularjs 2 @viewChildは動作していません

<div><pdfReader [imageUrl]="imgsource" *ngIf="holeDocument.ext == 'pdf'"></pdfReader></div> 

.TS

import { Component ,ViewChild } from '@angular/core'; 
import {PdfReader} from "../../shared/pdfreader/pdfReader"; 
@Component({ 
selector: 'docView', 
templateUrl: 'docView.html', 
styleUrls : ["docView.less"] 
}) 
export class DocViewComponent{ 
@ViewChild('PdfReader') public pdfReader: PdfReader; 
constructor(){} 
ngAfterViewInit(){ 
    this.imageRotate(); 
}    
imageRotate(){ 
this.pdfReader.rotateLeft(); 
}} 

子供:

@Component({ 
selector: 'pdfReader', 
templateUrl: 'pdfReader.html' 
}) 
export class PdfReader{ 
@Input() imageUrl : any; 
rotateLeft(){ 
     console.log('rotateLeft called'); 
     this.rotationAngel -= 90; 
    } 
} 
+0

'@ViewChild()'の使用方法に関するご質問はありません。これがあなたの質問の最も重要な部分だとは思わない? –

+0

@GünterZö[email protected]( 'PdfReader')public pdfReader:PdfReader;また編集されました。 – sibi

+0

'ngAfterViewInit()'の 'console.log(this.pdfReader);は何を出力しますか?あなたの質問のHTMLはコンポーネントテンプレートの一部ですか? '@Component()'デコレータとコンポーネントのクラス名をコードに追加してください。 –

答えて

2

あなたが照会するコンポーネントタイプを使用する場合は、引用符が冗長

@ViewChild(PdfReader) public pdfReader: PdfReader; 

あるクエリとして文字列を使用する場合は、変数

<div><pdfReader #PdfReader [imageUrl]="imgsource" *ngIf="holeDocument.ext == 'pdf'"></pdfReader></div> 

一致するテンプレートがある必要があります関連項目angular 2/typescript : get hold of an element in the template

1
*ngIf="holeDocument.ext == 'pdf'" 

* ngIfは、トリックをやっています。要素は、その条件が満たされるまでレンダリングされません。

代わりに[hidden]を使用してください。

<pdfReader [imageUrl]="imgsource" [hidden]="holeDocument.ext != 'pdf'"></pdfReader> 
関連する問題