Я использую @ ngtools / webpack для сборки AoT углового гибридного приложения. Я использую angular2-template-loader в сборке dev, но компоненты работают так, как будто ключ templateUrl не изменился, и браузер пытается лениво загрузить html с веб-сервера dev.
Что может заставить angular2-template-loader не преобразовывать ключ templateUrl и также ни на что не жаловаться?
// Rather than this:
// import html from './something.component.html';
// use templateUrl to make AoT compiler happy and use angular2-template-loader
// to make dev build revert to imported templates.
@Component({selector: something, templateUrl: './something.component.html'})
Сборка AoT успешно преобразует ключ templateUrl и обслуживает шаблоны из пакета по желанию.
Компоненты с этой проблемой понижаются и регистрируются как директивы в модуле приложения angularjs и объявляются в модуле angular 7.1.4. Компонент angularjs, которому принадлежит шаблон, где проблемный компонент объявлен с
<something></something>
успешно импортирует HTML для родительского шаблона в обеих сборках.
import parent_template from './parent.html';
const parentComponent = {
controller: ParentController,
controllerAs: "vm",
template: parent_template,
};
ajsFeatureModule.component('parentComponent', parentComponent);
Вот раздел конфигурации env для разработки веб-пакетов с правилом загрузчика ts и правилом загрузки html. Правило html - конфигурация по умолчанию из @ rails / webpacker.
{ test: /\.(ts|tsx)?(\.erb)?$/,
use: [ 'ts-loader', 'angular2-template-loader' ],
exclude: [ /node_modules/ ] },
{ test: /\.html$/,
use:
[ { loader: 'html-loader',
options:
{ minimize: true,
removeAttributeQuotes: false,
caseSensitive: true,
customAttrSurround: [ [ /#/, /(?:)/ ], [ /\*/, /(?:)/ ], [ /\[?\(?/, /(?:)/ ] ],
customAttrAssign: [ /\)?\]?=/ ] } } ] },
@ ntools / webpack v7.1.4
WebPack v4.27.1
angular2-template-loader v0.6.2