对于angularjs 2,我需要使用@viewChild,但是它会引发错误,因为‘无法读取未定义的’‘的属性'rotateLeft’。父母:
<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;
}
}发布于 2017-02-02 14:15:35
如果使用组件类型进行查询,则引号是多余的。
@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
发布于 2017-02-02 13:44:59
*ngIf="holeDocument.ext == 'pdf'"*ngIf正在做这方面的工作。元素在满足该条件之前不会呈现。
用隐藏代替。
<pdfReader [imageUrl]="imgsource" [hidden]="holeDocument.ext != 'pdf'"></pdfReader>https://stackoverflow.com/questions/42003790
复制相似问题