尝试在angular2组件中使用exportAs

时间:2016-04-29 20:25:40

标签: angular angular2-template

是否为组件定义了exportAs属性。 如何在组件外部访问它的方法? 我试过这个例子

<my-app #my="myApp">
loading...
</my-app>


<button (click)="my.displayMessage()" class="ui button">
  Display popup for message element
</button>

这里是组件类

 import {Component} from 'angular2/core'

 @Component({
 selector: 'my-app',
 providers: [],
 template: `
  <div>
    <h2>Hello {{name}}</h2>

  </div>
  `,
  directives: [],
   exportAs: "myApp"
})
export class App {
  constructor() {
   this.name = 'Angular2'
  }

  displayMessage():void {
   console.log('called from component')
  }
}

3 个答案:

答案 0 :(得分:3)

这不应该奏效。您不能在根组件(#xxx)的模板之外添加任何(xxx)App或任何其他类型的Angular绑定。

您可能正在寻找类似How to dynamically create bootstrap modals as Angular2 components?

的内容

答案 1 :(得分:1)

exportAs用于指令,请参阅:http://plnkr.co/edit/IlLtBY7Ic9yKiRIpjukf?p=preview

@Directive({
  selector: "div",
  exportAs: "myDiv"
})
class MyDiv {

  constructor(private element: ElementRef, private renderer: Renderer) {
  }

  toUpper() {
    return this.renderer.setElementStyle(this.element.nativeElement, "text-transform", "uppercase");
  }

  toLower() {
    return this.renderer.setElementStyle(this.element.nativeElement, "text-transform", "lowercase");
  }

  reset() {
    return this.renderer.setElementStyle(this.element.nativeElement, "text-transform", "");
  }
}

答案 2 :(得分:0)

exportAs被引入,并且可以从Angular 5中获得。

角2,4没有。这是指向Angular.io blog for Angular5

的链接