角导入在一个模块中效果很好,但在另一个模块中不起作用

新世界

我有一个带有aapp.module和a的angular4&Universal应用程序app.browser.module/app.server.module

App.Module具有所有应用程序配置和引导程序。app.browser.module调用浏览器中使用的模块,以避免破坏通用版本。

Github上的项目仓库链接

当我将外部lib(ng2-semantic-ui)导入时app.browser.module,应用程序无法识别ng2-semantic-ui指令,但是当我将其导入到'app.module'时,它可以识别指令。

这是我的模块结构:

app.module.ts

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

import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { SuiModule } from 'ng2-semantic-ui';

@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
  ],
  imports: [
    BrowserModule.withServerTransition({appId: 'app.id'}),
    SuiModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.browser.module.ts

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

import { AppModule } from './app.module';
import { AppComponent } from './app.component';   
import { SuiModule } from 'ng2-semantic-ui';

@NgModule({
  imports: [
    BrowserAnimationsModule,
    AppModule,
    SuiModule,
  ],
  bootstrap: [AppComponent]
})
export class AppBrowserModule {}

当我SuiModuleapp.module应用程序内部导入时,可以识别其指令,但是当我将其导出到时app.browser.module,它不会。为什么?

错误

compiler.es5.js:1690 Uncaught Error: Template parse errors:
'sui-sidebar' is not a known element:
1. If 'sui-sidebar' is an Angular component, then verify that it is part of this module.
2. If 'sui-sidebar' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("

BrowserAnimationsModule当我将PS导入其中时,它们在应用程序中被识别app.browser.module

博格丹奇

您的问题来自Angular的模块层次结构。您要尝试的是建造建筑物,然后在第二层添加一个房间(关于组件),然后在第三层添加一个窗口(语义ui),然后将其添加到第二层的房间中。在您的情况下,您向app.module声明about.component,并尝试在about.components上使用一些语义组件,这些语义组件稍后在同时导入app.module时在app.browser.module上导入。

要修复它,您必须将组件声明移至app.browser.module

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

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

import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';

/*Code that breaks the NG APP when importing SUI on app.browser.module, but works well when imported on app.module*/
import {SuiModule} from 'ng2-semantic-ui';

@NgModule({
  imports: [
    BrowserAnimationsModule,
    AppModule,
    SuiModule,
  ],
  declarations: [HomeComponent,
                AboutComponent],
  bootstrap: [ AppComponent ]
})
export class AppBrowserModule {}

或者您在app.module上执行此操作

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

import { AppComponent } from './app.component';

import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppRoutingModule } from './app-routing.module';

import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';

/*Code that breaks the NG APP when importing SUI on app.browser.module, but works well when imported on app.module*/
import {SuiModule} from 'ng2-semantic-ui';


@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    AboutComponent
  ],
  imports: [
    BrowserModule.withServerTransition({appId: 'ngcli-universal-seed-app'}),
    FormsModule,
    HttpModule,
    AppRoutingModule,
    SuiModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

您可以使用所需的体系结构(尽管坚持使用@angular提出的建议是一件好事),只要正在使用组件的页面在其模块中(直接或通过另一个模块)导入了该组件。

编辑

搜索关于这个问题的解决方案,我发现一个有趣的网页约角通用服务器端呈现在这里

在本文中,我发现到样板的链接比您正在使用的样板的链接结构更好,并且是最新的。你可以在这里找到它我建议您使用此版本,因为它结构更好并且可以正常工作。

最后,我将您的语义UI代码添加到此样板的“关于”页面,将模块导入其about.module,编译通用应用程序并运行它,一切正常。

我放弃了你的样板与工作添加的代码在这里

总而言之,问题可能来自您正在使用的样板结构,或者在构建时出现了一些依赖冲突。此外,我发现通用应用程序Google文档不完整且过时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Regexp :: Debugger Perl模块似乎在另一个Perl模块中不起作用

在另一个模块中调用时,tkinter combobox函数不起作用

Python导入模块在另一个文件中

在python中,有关导入一个模块并导入另一个模块的问题?

在C ++中嵌入Python:在python脚本中导入模块在一个函数调用期间起作用,而在另一函数调用时不起作用

解决另一个模块中的模块路径

如何将模块导入databricks笔记本中的另一个模块?

从我的模块中的另一个文件夹在 python 中导入模块函数

(Python)在一个模块中从__init__导入参数以在另一个模块中使用?

从另一个列表中删除一个列表不起作用

将一个函数放在另一个函数中不起作用

在Julia中的另一个模块中包含一个模块

如何导入和使用从自身中的另一个文件导入类的python模块?

当一个模块位于另一个模块的父目录中时,如果模块之间存在循环依赖关系,则导入的模块未定义

尝试在另一个目录中导入组件时,React中的动态导入不起作用

使用从另一个导入中导入的模块

Intellij无法从另一个模块中的一个模块访问类

如何在Android的另一个模块中访问一个模块的视图?

如何从Angular2中的另一个模块继承一个模块?

外部声卡 UR22 Steinberg 在一个安装中工作,但在另一个安装中不起作用

从另一个类(在另一个模块中)调用自变量

一个模块中的两个控制器不起作用

使用另一个模块中的组件

覆盖另一个模块中的方法

在另一个模块中获取资源的URL

angularjs在服务中包含另一个模块

从另一个模块中删除子项

遍历另一个模块中的函数

在另一个线程中从模块更新标签