Angular 库中的组件不能与ngIf/ngFor一起使用
我有一个应用程序,我正试图升级到angular 5和library tize。 我设置了ng Packagegr,以便构建和绑定lib,这是没有问题的,除非我尝试将其中一个组件与ngIf或NGF一起使用,因为它们给出了错误信息Angular 库中的组件不能与ngIf/ngFor一起使用,angular,Angular,我有一个应用程序,我正试图升级到angular 5和library tize。 我设置了ng Packagegr,以便构建和绑定lib,这是没有问题的,除非我尝试将其中一个组件与ngIf或NGF一起使用,因为它们给出了错误信息 HeaderComponent.html:13 ERROR Error: StaticInjectorError[ViewContainerRef]: StaticInjectorError[ViewContainerRef]: NullInjectorE
HeaderComponent.html:13 ERROR Error: StaticInjectorError[ViewContainerRef]:
StaticInjectorError[ViewContainerRef]:
NullInjectorError: No provider for ViewContainerRef!
at _NullInjector.get (core.js:993)
在运行时。我环顾四周,尝试了一些不同的东西,但似乎没有什么能解决它
以下是库的相关模块代码
@NgModule({
imports: [
CommonModule,
FormsModule,
RouterModule,
/* Bootstrap Imports */
AccordionModule,
AlertModule,
ButtonsModule,
CarouselModule,
CollapseModule,
BsDropdownModule,
ModalModule,
PaginationModule,
ProgressbarModule,
RatingModule,
TabsModule,
TimepickerModule,
TooltipModule,
TypeaheadModule,
DatepickerModule,
ServicesModule,
],
declarations: [
LayoutComponent,
HeaderComponent,
FooterComponent,
OffsidebarComponent,
SidebarComponent,
UserblockComponent,
OverlayComponent,
BusyIndicatorComponent
],
exports: [
LayoutComponent
],
providers: [
UserblockService
]
})
export class ComponentsModule {}
下面是报告错误的HTML
<a class="hidden-xs" trigger-resize="" (click)="toggleCollapsedSideabar()" *ngIf="!isCollapsedText()">
<i class="material-icons">menu</i>
</a>
菜单
您应该将BrowserModule添加到导入阵列中
@NgModule({
imports: [
BrowserModule, <----- add this
CommonModule,
FormsModule,
RouterModule,
@NgModule({
进口:[
BrowserModule,在将库添加到主应用程序之前,从库的包中删除依赖项。json
对我来说是一个解决办法。在消费应用程序的angular.json
中添加preserveSymlinks标志
{"projects": {
"MyApp": {
"architect": {
"build": {
"options": {
"preserveSymlinks": true, // <-----
[...]
{“项目”:{
“MyApp”:{
“建筑师”:{
“构建”:{
“选择”:{
“preserveSymlinks”:是的,//我终于通过以下操作完成了设置:
正确设置npm链接(“npm链接”位于库的dist文件夹中,然后“npm链接libname”位于主应用程序文件夹中)
在使用库的应用程序的angular.json中将preserveSymlinks设置为true
正如@Michael R.提到的
{"projects": {
"MyApp": {
"architect": {
"build": {
"options": {
"preserveSymlinks": true, // <-----
[...]
"angularCompilerOptions": {
"preserveSymlinks": true,, // <-----
[...]
{“项目”:{
“MyApp”:{
“建筑师”:{
“构建”:{
“选择”:{
“保存符号链接”:true,//当我尝试添加浏览器时,它给了我一个错误,注入器现在找不到ngzone…我认为common exported ngif和ngfor也有此问题,我过去也遇到过此问题,并通过以下方式解决了此问题:希望有帮助!你能更准确地描述一下这一点,你做了什么?你删除了库的package.json中的所有内容,然后添加了libra你对主应用程序的npm包感兴趣吗?是的,正是你所说的。从你的库的package.json
文件中删除你在消费应用程序中不需要的所有依赖项。例如,我只有一个,它是slider库。你不需要消费应用程序已经拥有的任何东西,即Angle包。这现在会导致NullInjectorError:没有NgZone的提供程序!