在typescript中导入html模板

时间:2017-12-08 10:54:40

标签: angularjs typescript angular-routing webpack-3 typescript-2.5

我尝试import我的html模板,以便webpack能够识别它们并在构建时包含它们。 (webpack -d

根据this GitHub issue我应该这样做

declare module '*.html' {
    const _: string;
    export default _;
}

然后import template from './myTemplate.html';应该有用。

但它并没有完全成功。

import template from './myTemplate.html';
console.log(template); // undefined

然而,这个"起作用"

import * as template from './myTemplate.html';
console.log(template); // <p>Hello world!</p>

很奇怪。

但现在这不起作用

$routeProvider.when("/test", {
    template: template, // ERROR! template is typeof(*.html) expected string
    controller: MyController,
    controllerAs: "$ctrl"
});

但是,如果我将* .html模块更改为

declare module '*.html' {
    const _: string;
    export = _; // changed this
}

我现在可以做

import * as template from './myTemplate.html';

$routeProvider.when("/test", {
    template: template, // Great success!
    controller: MyController,
    controllerAs: "$ctrl"
});

它有效,但为什么import template from './myTemplate.html';不起作用? 我做错了什么,因为GitHub问题中的其他人似乎让它像那样工作。

1 个答案:

答案 0 :(得分:5)

您没有做错任何事情,为了使用import template from './myTemplate.html';您需要使用export default语法。

由于webpack是处理html的人,因此默认情况下导出doesn't do导出默认值。

但您可以configure html-loader使用导出默认值。