我有一个angular4&具有df = df.withColumn('c2',explode(df['c2']))
df.alias('df1') \
.join(df.alias('df2'),((col('df1.c1') == col('df2.c2')) & (col('df2.c1') == col('df1.c2')))) \
.select(col('df1.c1'),col('df1.c2'))
和app.module
的通用应用程序。
app.browser.module/app.server.module
拥有所有应用配置和引导程序。 App.Module
调用浏览器中使用的模块,以避免破坏通用构建。
Link for the project repo on Github
当我将外部库(app.browser.module
)导入ng2-semantic-ui
时,该应用确实无法识别app.browser.module
指令,但当我将其导入'app.module'时,它确实如此。
这是我的模块结构:
ng2-semantic-ui
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 { }
当我在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 {}
内导入SuiModule
时,该应用会识别其指令,但当我将其发送到app.module
时,它却没有。为什么呢?
app.browser.module
P.S。我在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
。
答案 0 :(得分:2)
它不起作用,因为您尝试在sui-sidebar
模板中使用HomeComponent
组件,该组件已在AppModule
中声明且此模块没有{{ 1}}范围内的组件
这就是封装在sui-sidebar
中的工作原理。指令,组件和管道未在“全球”范围内发布。
如果您想在@NgModules
中使用sui-sidebar
组件,那么
1)找到已声明HomeComponent
的{{1}} @NgModule
。
2)查看HomeComponent
AppModule
数组。你看到declarations
组件了吗?如果你这样做,否则将起作用
3)查看AppModule
数组。您是否看到任何导出sui-sidebar
的模块。如果你那么它会工作,否则不幸的是你会得到像
模板解析错误中的错误:'sui-sidebar'不是已知元素:
如果您的外部库与服务器渲染不兼容,那么预渲染在任何情况下都不起作用。
另见
答案 1 :(得分:1)
您的问题来自Angular的模块层次结构。你正在尝试建立一个建筑物,在二楼你添加一个房间(你的组件),然后你在三楼添加一个窗口(语义ui),你想要它添加在二楼的房间。在您的情况下,您将about.component声明为app.module,并尝试在about.components上使用稍后导入app.browser.module时导入app.module的一些语义组件。< / p>
要解决此问题,您必须将组件声明移至 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建议是一件好事),只要消耗组件的页面在其模块中直接导入该组件(直接或通过另一个模块)。
正在寻找有关此问题的解决方案,我找到了一个关于Angular Universal Server Side Rendering here的有趣页面。
在文章中,我发现我发现的样板链接比你正在使用和更新的结构更好。你可以找到它here。我建议你使用这个,因为结构更好,它可以工作。
最后,我将您的语义ui代码添加到此样板的页面,将模块导入其about.module,编译通用应用程序并运行它,一切正常。
我为你删除了带有工作添加代码here
的样板文件总而言之,问题来自您正在使用的样板结构或构建时的一些依赖冲突。另外,我发现通用应用上的Google documentation不完整且过时。