首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs 2 @viewChild不起作用

Angularjs 2 @viewChild不起作用
EN

Stack Overflow用户
提问于 2017-02-02 13:43:07
回答 2查看 1.1K关注 0票数 3

对于angularjs 2,我需要使用@viewChild,但是它会引发错误,因为‘无法读取未定义的’‘的属性'rotateLeft’。父母:

代码语言:javascript
复制
<div><pdfReader [imageUrl]="imgsource" *ngIf="holeDocument.ext == 'pdf'"></pdfReader></div> 

.ts

代码语言:javascript
复制
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();
}}

儿童:

代码语言:javascript
复制
@Component({
selector: 'pdfReader',
templateUrl: 'pdfReader.html'
})
export class PdfReader{
 @Input() imageUrl : any;
 rotateLeft(){
        console.log('rotateLeft called');
        this.rotationAngel -= 90;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 14:15:35

如果使用组件类型进行查询,则引号是多余的。

代码语言:javascript
复制
@ViewChild(PdfReader) public pdfReader: PdfReader;

如果使用字符串作为查询,则需要有匹配的模板变量。

代码语言:javascript
复制
<div><pdfReader #PdfReader [imageUrl]="imgsource" *ngIf="holeDocument.ext == 'pdf'"></pdfReader></div> 

另见angular 2 / typescript : get hold of an element in the template

票数 2
EN

Stack Overflow用户

发布于 2017-02-02 13:44:59

代码语言:javascript
复制
 *ngIf="holeDocument.ext == 'pdf'"

*ngIf正在做这方面的工作。元素在满足该条件之前不会呈现。

用隐藏代替。

代码语言:javascript
复制
<pdfReader [imageUrl]="imgsource" [hidden]="holeDocument.ext != 'pdf'"></pdfReader>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42003790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档