4

我注意到 Angular2 Renderer 没有从 DOM 中提取数据的 API,例如 textContent 或 innerHTML 或 getAttribute。甚至@ViewChild包含一个目标元素,您可以使用 JS DOM API 更改传统方式,但不建议将其用于其他环境,例如 WebWorker 或 Native Apps。

以下示例将每个单词包装在一个跨度中。我做得正确还是可以改进?

import {Component, Directive, OnInit, ElementRef} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';

@Directive({
  selector: 'wrapper'
})
class WrapperDirective implements OnInit {
  constructor(private _element: ElementRef) {}

  ngOnInit() {
    var tElement = $(this._element.nativeElement);
    var DOM = '';

    tElement
      .text()
      .split(' ')
      .forEach(function(word) {
        if (word !== '') {
          DOM+= '<span>' + word + '</span>';
        }
      });

    tElement.html(DOM);
  }
}

@Component({
  selector: 'ng-app',
  template: `
    <wrapper>Lorem Ipsum Dolar Sit Amet</wrapper>
  `,
  directives: [WrapperDirective]
})
export class MyApp {

}
bootstrap(MyApp);
4

0 回答 0