如何在 Angular 2 中编译 html?

Posted

技术标签:

【中文标题】如何在 Angular 2 中编译 html?【英文标题】:How to compile html in angular 2? 【发布时间】:2016-04-20 20:29:38 【问题描述】:

我开始学习 Angular 2 并希望通过单元测试来解决问题。所以我希望我所有的指令/组件都用测试来编写。

在 angularJS(第一个版本)中测试指令你使用$compile。这是文档中的示例:

  it('Replaces the element with the appropriate content', function() 
    var element = $compile("<a-great-eye></a-great-eye>")($rootScope);
    $rootScope.$digest();
    expect(element.html()).toContain("lidless, wreathed in flame, 2 times");
  );

如何在angular 2中编译html文本写测试?

我想测试最简单的指令:

import Component from 'angular2/core';
@Component(
  selector: 'email',
  template: `Hello Email`
)
export class EmailComponent 

【问题讨论】:

看看这个问题:***.com/questions/32340641/… 这个问题不是很清楚。您问的是如何在 Angular 2 中使用 Angular 1 的概念,但 Angular 2 是从头开始编写的,考虑到了不同的设计理念,而且这些概念甚至都不相似。 重点是我想测试这个最简单的指令,不知道怎么做:/ 测试指令与编译 HTML 有什么关系? 正如您在 angular1 示例中看到的 - 很多 【参考方案1】:

使用TestComponentBuilder,如https://github.com/angular/angular/blob/9e44dd85ada181b11be869841da2c157b095ee07/modules/angular2/test/common/directives/ng_for_spec.ts 中的示例所示

it('should reflect added elements',
       inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => 
         tcb.overrideTemplate(TestComponent, TEMPLATE)
             .createAsync(TestComponent)
             .then((fixture) => 
               fixture.detectChanges();

               (<number[]>fixture.debugElement.componentInstance.items).push(3);
               fixture.detectChanges();

               expect(fixture.debugElement.nativeElement).toHaveText('1;2;3;');
               async.done();
             );
       ));

【讨论】:

再难不过了:/ 我只想测试最简单的指令(已编辑问题) 我不使用 TS,因此我没有创建自定义答案。有很多例子。基本上你只需要注入TestComponentBuilder 并调用createAsync(MyComponent) 并使用它。我没有仔细看上面测试示例中的其他代码是做什么的。异步执行增加了一些额外的复杂性。

以上是关于如何在 Angular 2 中编译 html?的主要内容,如果未能解决你的问题,请参考以下文章

Angular X - 如何更改 index.html 中已编译 JavaScript 文件的路径 [重复]

Datatables:在drawCallBack之后用Angular编译表格HTML时如何使分页工作?

如何在 Angular 2 中编译 ng-content 中的动态模板

在 Angular (>= 2) 应用程序中,如何将 npm package.json 文件中的版本信息包含到已编译的输出文件中?

如何在 Angular CLI 6: angular.json 中添加 Sass 编译?

如何在 html 元素属性中使用 Angular 2 外推?