Я использую webpack для компиляции угловых, но, похоже, проблема с компиляцией определений классов. Классы, которые я объявляю и экспортирую в модули, недоступны без повторного использования их в компонентах.Угловая сборка webpack Не могу найти компонент имени
Пример:
мне нужно использовать BasePageComponent на каждом PageComponent под pages.module.ts
pages.module.ts
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { BasePageComponent } from './base/base-page.component';
import { CreateListingPageComponent } from './create-listing.component';
import { DashboardPageComponent } from './dashboard.component';
import { LogInForgotPageComponent } from './login-forgot.component';
import { LogInPageComponent } from './login-page.component';
@NgModule({
declarations: [
BasePageComponent,
CreateListingPageComponent,
DashboardPageComponent,
LogInForgotPageComponent,
LogInPageComponent
],
exports: [
BasePageComponent,
CreateListingPageComponent,
DashboardPageComponent,
LogInForgotPageComponent,
LogInPageComponent
],
imports: [
RouterModule
],
providers: [
],
bootstrap: []
})
export class PagesModule { }
логин-forgot.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
@Component({
'selector': 'login-forgot',
'template': `
<p>Forgot pw</p>
<input type="text">send forgot email
<a [routerLink]="['/login']">Back to login</a>
`
})
export class LogInForgotPageComponent extends BasePageComponent {
public setTimeoutHandler;
constructor() {
super();
}
ngOnInit(){
this.setTimeoutHandler = setTimeout(() => {
//this.loader.stop();
}, 1000);
}
ngOnDestroy(){
clearTimeout(this.setTimeoutHandler);
//this.loader.start();
}
}
Ошибка, которую я получаю:
ERROR in [at-loader] resources/assets/typescript/components/pages/login-forgot.component.ts:13:47
Cannot find name 'BasePageComponent'.
Как мне удалось взломать-ремонт это:
я вставил эту строку кода перед LogInForgotPageComponent
import { BasePageComponent } from './base/base-page.component';
package.json
{
"private": true,
"devDependencies": {
"awesome-typescript-loader": "^3.0.0-beta.17",
"del": "^2.2.0",
"gulp": "^3.9.1",
"typescript-decorate": "^1.0.0",
"typescript-extends": "^1.0.1",
"typescript-metadata": "^1.0.0",
"typescript-param": "^1.0.0",
"typings": "^2.1.0"
},
"scripts": {
"install": "cd resources/assets/typescript"
},
"dependencies": {
"@angular/common": "^2.4.1",
"@angular/compiler": "^2.4.1",
"@angular/core": "^2.4.1",
"@angular/forms": "^2.4.1",
"@angular/http": "^2.4.1",
"@angular/platform-browser": "^2.4.1",
"@angular/platform-browser-dynamic": "^2.4.1",
"@angular/router": "^3.4.1",
"@angular/upgrade": "^2.4.1",
"bootstrap-less": "^3.3.8",
"es6-shim": "^0.35.0",
"es7-reflect-metadata": "1.2.0",
"jquery": "^2.0.0",
"laravel-elixir": "^5.0.0",
"laravel-elixir-livereload": "^1.1.6",
"laravel-elixir-webpack-ex": "0.0.6",
"ng2-redux": "^5.1.0",
"redux": "^3.6.0",
"reflect-metadata": "0.1.3",
"rxjs": "^5.0.2",
"source-map-loader": "0.1.5",
"underscore": "^1.8.3",
"webpack": "1.13.2",
"zone.js": "^0.7.2"
}
}
В целом вопрос : Как я могу объявить компоненты и службы в NgModules и после этого не переименовывать их в проект? Что я здесь делаю неправильно?
Может ли кто-нибудь проверить это? Тогда в чем смысл NgModules, если мне еще нужно импортировать каждый компонент и службу, например, pre-RC5? Также это звучит неправильно, потому что тогда у меня есть 2 импорта для всего: один в компоненте и один в модуле. И оба они указывают на происхождение импорта. Это означает, что если я импортирую {A} из B в компоненте и модуле, а затем изменим A, тогда мне придется перебирать все компоненты в каждом модуле, который импортирует A из-за двойного импорта ... –
Также, если я объявляю для пример BrowserModule в моем NgModule (import {BrowserModule} из '@ angular/platform-browser';), тогда мне не нужно повторно импортировать его в свой файл Component, он автоматически компилируется, и я могу его использовать, когда я импортировал его в компоненты родительский модуль. –