WedX - журнал о программировании и компьютерных науках

Компоненты angular4 недоступны для просмотра через app.module

Я пытаюсь построить проект angular 4. я создал общую папку с папками службы, моделей и компонентов в них и файлом shared.module.ts. каждая папка в виде файла модуля (services.module,components.module,models.module), я импортирую файлы этих модулей в shared.module.ts и импортирую их в app.module.ts.

я также создал папку представлений с компонентами входа и учетной записи в ней и файлом views.module.ts. я объявляю эти компоненты внутри views.module.ts и импортирую их в app.module.ts.

я думал, что это позволит мне использовать мои общие компоненты (простой компонент заголовка) внутри моих представлений (логин, учетная запись), но я получаю сообщение об ошибке «compiler.es5.js: 1690 Uncaught Error: Template parse errors: 'app- header' не является известным элементом:"

я могу получить доступ к общим компонентам внутри app.component.html.

также, когда я объявляю компоненты входа и учетной записи внутри app.module.ts, я могу получить доступ к своим общим компонентам внутри представлений. но это не организовано, и я хотел бы иметь возможность добавить несколько компонентов вместе через модуль или какой-либо другой файл.

мой вопрос в том, возможно ли это сделать в angular 4, и если да, то как?

app.module.ts

import { BrowserModule }    from '@angular/platform-browser';
import { NgModule }         from '@angular/core';

import { SharedModule }     from './shared/shared.module';

import { AppComponent }     from './app.component';
import { ViewsModule }      from './views/views.module';

import { AppRoutingModule }   from './app-routing.module';


@NgModule({
  declarations: [
    AppComponent,

  ],
  imports: [
    BrowserModule,
    SharedModule,
    ViewsModule,
    AppRoutingModule

  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

общий.модуль.тс

import { NgModule } from '@angular/core';
import { ServicesModule } from './services/services.module';
import { ModelsModule } from './models/models.module';
import { ComponentsModule } from './components/components.module'


@NgModule({
  imports: [
    ServicesModule,
    ModelsModule,
    ComponentsModule
  ],
  exports:[
    ServicesModule,
    ModelsModule,
    ComponentsModule
  ]

})

export class SharedModule {
}

компоненты.модуль.тс

import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';

import { HeaderComponent } from './header/header.component';

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule
  ],
  exports:[
    HeaderComponent
  ],
  declarations: [
    HeaderComponent
  ],
  entryComponents: [

  ],
  providers: [

  ]
})

export class ComponentsModule {
}

view.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { LoginComponent } from './login/login.component';
import { AccountComponent } from './account/account.component';

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
  ],
  exports:[
     LoginComponent,
     AccountComponent
  ],
  declarations: [
    LoginComponent,
    AccountComponent
  ],
  entryComponents: [],
  providers: []
})

export class ViewsModule {
}

введите здесь описание изображениявведите здесь описание изображения

16.08.2017

  • Просто предположение, попробуйте добавить @NgModule({..., schemas: CUSTOM_ELEMENTS_SCHEMA, ...}) ко всем вашим модулям 16.08.2017
  • schemas отключает все проверки инкапсуляции 16.08.2017
  • ошибка исчезла, но я все еще не вижу компонент заголовка в режиме входа в систему 16.08.2017

Ответы:


1

прочитав много об этом, я понял, что модули не наследуют доступ к компонентам, директивам или каналам, которые объявлены в других модулях. То, что импортирует AppModule, не имеет отношения к другим модулям. https://github.com/angular/angular/issues/15024

есть также интересное удаление по этой проблеме в ее https://github.com/angular/angular/issues/10646

на данный момент я импортировал ComponentsModule в ViewModule, это решает мою проблему, но я все еще ищу лучшее решение.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { LoginComponent } from './login/login.component';
import { AccountComponent } from './account/account.component';

import { ComponentsModule } from '../../shared/components/components.module'


@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    ComponentsModule// this is the relevant import fix.
  ],
  exports:[
     LoginComponent,
     AccountComponent,
  ],
  declarations: [
    LoginComponent,
    AccountComponent,
  ],
  entryComponents: [],
  providers: [],
})

export class ViewsModule {
}
22.08.2017
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: wedx@cp9.ru