Angular找不到templateUrl

Uda*_*ani 8 angular

我正在尝试使用角度js 2中的以下代码加载Html文件.此文件在产品文件夹下可用,我尝试加载的html文件也在同一文件夹中.它仍然没有用.

import {Component} from 'angular2/core';

@Component({
    templateUrl:'./products/app.component.pen.html'
})

export class PenComponent
{

}
Run Code Online (Sandbox Code Playgroud)

上面的文件是从下面的AppComponent加载的.

import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES} from "angular2/router";
import {PenComponent} from "./products/app.component.pen";
import {BookComponent} from "./products/app.component.book";  

@Component({
    selector: 'my-app',
    template: `
            <header>
                <ul>
                <li>
                <a [routerLink]="['Pen']">Pen</a></li>

                <li>
                <a [routerLink]="['Book']">Book</a></li>
                </ul>

            </header>
        <router-outlet></router-outlet>
    `,
    directives: [ROUTER_DIRECTIVES]

})

@RouteConfig([
    {path: '/pen', name: 'Pen', component: PenComponent, useAsDefault:true}
    {path: '/book', name: 'Book', component: BookComponent}


])


export class AppComponent {

}
Run Code Online (Sandbox Code Playgroud)

dre*_*ore 26

您必须为styleUrls和templateUrls使用相对于项目根目录的路径(因此app/foo/bar/products/app.component.pen.html而不是./products/app.component.pen.html).

要使用相对于组件文件的URL,您的项目必须是一个commonjs模块("module":"commonjs"在tsconfig中设置),并且必须包含module.id在组件装饰器中:

@Component({ 
  selector: 'foo',
  moduleId: module.id // <== need this
  templateUrl: './foo.html'
})
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢=> moduleId:module.id (2认同)