如何从结构指令

时间:2016-10-27 15:18:50

标签: angular angular2-directives

我创建了一个结构 SpinnerDirective,我这样使用:

<div *spinner="'spinner1'" spinnerMessage="Loading many things...">
  <p>Hide this while loading...</p>
</div>

该指令的代码如下所示:

@Directive({
  selector: '[spinner]'
})
export class SpinnerDirective {
  private _defaultMessage = 'Loading...';

  @Input('spinner') spinnerName: string;

  @Input('spinnerMessage') set message(messageStr: string){
    console.log('setting message of', messageStr);
    this._defaultMessage = messageStr || this._defaultMessage;
  }

  // ...
}

问题:永远不会调用setter方法(set message)。

我怀疑这是因为Angular“desugars”我的模板如下:

<template [spinner]="'spinner1'">
  <div spinnerMessage="Loading many things...">
    <p>Hide this while loading...</p>
  </div>
</template>

但我仍然不知道如何从指令中访问spinnerMessage。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

结构指令语法应如下所示:

<div *spinner="'spinner1'; message: 'Loading many things...'">
  <p>Hide this while loading...</p>
</div>