- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不明白 router-outlet
和 module's exports array
编译策略的区别。
router-outlet
将通过 ComponentFactoryResolver 自动生成组件router-outlet
访问其他模块的组件,它会从template parser 中抛出错误。 为什么我们需要将它添加到导出数组中,Angular 不能自动生成模块中定义的组件,如 router-outlet
。
我知道如果我想使用其他模块的组件,它需要添加到导出。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { M1Module } from './m1/m1.module';
// import { AppRoutingModule } from './app-routing.module';
@NgModule({
imports: [
BrowserModule,
// AppRoutingModule,
M1Module
],
declarations: [AppComponent, HelloComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
----------------------
@NgModule({
imports: [
CommonModule
],
declarations: [
Comp1Component,
Comp2Component
],
exports: [
Comp1Component
]
})
export class M1Module {}
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
</p>
<app-comp1></app-comp1>
如果我通过路由访问组件(http://example.domain.com/comp1)
,它不需要导出,它可以工作。
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { M1Module } from './m1/m1.module';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
imports: [
BrowserModule,
AppRoutingModule,
M1Module
],
declarations: [AppComponent, HelloComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
/*****************************************************/
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { Comp1Component } from './m1/comp1/comp1.component';
import { Comp2Component } from './m1/comp2/comp2.component';
const routes: Routes = [
{ path: 'comp1', component: Comp1Component },
{ path: 'comp2', component: Comp2Component }
];
@NgModule({
imports: [ RouterModule.forRoot(routes) ],
exports: [ RouterModule ]
})
export class AppRoutingModule {}
/*****************************************************/
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Comp1Component } from './comp1/comp1.component';
import { Comp2Component } from './comp2/comp2.component';
@NgModule({
imports: [
CommonModule
],
declarations: [Comp1Component, Comp2Component],
})
export class M1Module { }
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
</p>
<!-- it's need to use export -->
<!-- <app-comp1></app-comp1> -->
<!-- it doesn't need to use export -->
<router-outlet></router-outlet>
谢谢大家的回答,是我理解的总结:
通过模块的导出数组加载组件
通过路由器加载组件
最佳答案
如 Angular NgModule FAQs 中所述:
What should I export?
Export declarable classes that components in other NgModules are able to reference in their templates. These are your public classes. If you don't export a declarable class, it stays private, visible only to other components declared in this NgModule.
...
What should I not export?
Don't export the following:
Components that are only loaded dynamically by the router or by bootstrapping. Such entry components can never be selected in another component's template. While there's no harm in exporting them, there's also no benefit.
...
另请注意,路由器组件是 automatically added到 entryComponents
列表。
关于angular - 为什么使用router-outlet访问其他模块的组件不需要添加导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50895196/
大家好,我是 iOS 编程的新手。 我知道什么是强引用和弱引用。但是当我必须处理网点时,我很困惑应该使用哪种类型的引用。在阅读了说明 的文档之后 Outlets should generally be
作为希望迁移完整应用程序的第一步,我正在将应用程序的一部分迁移到 Ember。这是一个 Rails 应用程序,我正处于概念验证阶段。在我的 Rails View (index2.html.erb) 中
我正在通过 xib 实例化商店: let cShop = UINib(nibName: "connectedShop", bundle: nil).instantiateWithOwner(nil,
我正在使用 akka Streams graphDSL 创建一个可运行的图。流组件的入口/导出不存在编译时错误。运行时抛出以下错误: 有什么想法我应该验证什么才能使其运行吗? requirement
我收到错误: 'router-outlet' is not a known element: 1. If 'router-outlet' is an Angular component, th
我试图了解 View Controller 的生命周期,但我读到了一些关于 awakeFromNib 的相互矛盾的陈述。文档说所有 socket 都应该在 awakeFromNib 中设置,但是 I
我创建了 UITableViewController 的子类,然后将其设置为 UIStoryboard 中的 View 。 问题是启动应用程序时屏幕变黑,我认为这可能是因为 View 的 View o
以下起点: 我们有一些 Angular 前端微服务,现在我们想将它们整合到一个应用程序中。我们正在尝试 Angular-Elements 方法,我们已经导出了一个产生巨大 JS 文件的微服务。 问题
我知道 IBOutlet 是一个编译器指令,指示以下变量声明充当到其他对象的连接点。 Inspector 窗口中的 2 个术语可能会让初学者感到困惑。它们看起来像 2 种奥特莱斯。但它们可能意味着成为
我定义了一个连接到 Storyboard的UITableViewController,如下所示: class systemwhereFilterCtrl: UIViewController, UITa
我无法连接到文件的所有者 XIB。应用程序类型是通用的。在“引用网点”的文件所有者中,只有“新引用网点”,而在“引用网点集合”下,只有“新引用网点集合”。不可能将 UIImageView 的 IBOu
我在嵌套的路由器导出中有一个组件,但想创建一个指向父路由器导出中的路由的链接。我不确定你们想要我解释什么代码? 最佳答案 我无法从模板中做到这一点(也许看到这个答案有人可以告诉我从模板中做到这一点的方
我在 Xib 中引用了 UITextfields 的 Outlet Collection,排列如下。当我打印Referencing Outlet Collection时,我发现它是无序的。我需要自动排
如果我们在组件(任何组件)中使用 ,然后将 routerLink 放在该组件内的另一个组件上,链接是否总是呈现链接到当前事件组件的 中的组件? 换句话说,组件 routerLink 属性是否总是与
我有 2 个嵌套资源,在 Ember 路由器中发布和评论。我希望这能反射(reflect)网址:/posts/1/comments/1去这个页面应该, 使用帖子/索引模板呈现 id = 1 的帖子。
是否可以举起 Outlet[A]进入 FlowOps[A, _] ?那就是如果我有这个: import akka.NotUsed import akka.stream.Outlet import ak
当我尝试使用函数从其父 View Controller 更新容器 View 内容时。 更新初始 ViewDidLoad 集后。应用程序崩溃。好像所有的Outlet都变成了零 最佳答案 您需要在容器 V
我正在尝试更新我的应用程序以使用新的 v3 路由器,而不是 Angular 团队刚刚宣布的 http://angularjs.blogspot.com.au/2016/06/improvements-
我已经为几个按钮创建了一个 socket 集合,现在我需要更改按钮的背景,这是我的代码,但编译器给了我一个错误: [outlet makeObjectsPerformSelector:@selecto
我在 Xcode (Xcode 11.0) 上创建了一个项目,但出于某种原因,它不允许我从 Main.storyboard 添加导出: 图片显示它只让我添加 Action ,没有 socket 。有人
我是一名优秀的程序员,十分优秀!