Angular 为什么FormsModule在app.module中导入,而routing.module中的组件起作用?
我试图弄清楚angular是如何导入模块的,我不知道为什么它不能从根目录加载forms模块Angular 为什么FormsModule在app.module中导入,而routing.module中的组件起作用?,angular,Angular,我试图弄清楚angular是如何导入模块的,我不知道为什么它不能从根目录加载forms模块 ... @NgModule({ declarations: [AppComponent], imports: [AppRoutingModule, BrowserModule, TabsModule.forRoot(), FormsModule], providers: [ServersService], bootstrap: [AppComponent], }) export clas
...
@NgModule({
declarations: [AppComponent],
imports: [AppRoutingModule, BrowserModule, TabsModule.forRoot(), FormsModule],
providers: [ServersService],
bootstrap: [AppComponent],
})
export class AppModule {}
和批准模块
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'users', component: UsersComponent },
{ path: 'servers', component: ServersComponent },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
但是我从模板中得到了错误
<div class="form-group">
<label for="name">Server Name</label>
<input
type="text"
id="name"
class="form-control"
[(ngModel)]="serverName">
</div>
<div class="form-group">
<label for="status">Server Status</label>
<select
id="status"
class="form-control"
[(ngModel)]="serverStatus">
<option value="online">Online</option>
<option value="offline">Offline</option>
</select>
</div>
<button
class="btn btn-primary"
(click)="onUpdateServer()">Update Server</button>
服务器名
服务器状态
在线 的
离线
更新服务器
[(ngModel)]=“serverStatus”/[(ngModel)]=“serverStatus”-无法绑定到“ngModel”,因为它不是“select”的已知属性
我明白为什么,我需要导入表单模块,但不应该从根app.module
导入它
我还试着把它放在路由模块中,但它也不起作用
稍后我将把这些组件放在它们所属的模块中,从那里它将工作,但我只是想知道为什么它不能以这种方式工作?Angular只能向上查找堆栈,而不能向下查找 因此,如果您只想创建FormsModule的导入,请将其放在一个共享模块中,该模块在子模块中导入(并导出)。
如果不将其导入子模块,它就不知道是否存在。Angular只能向上而不是向下查找堆栈 因此,如果您只想创建FormsModule的导入,请将其放在一个共享模块中,该模块在子模块中导入(并导出)。
如果不将其导入子模块,它就不知道是否存在。请您说明
ngModel
的定义位置好吗?模板很可能来自此处未包含的组件,因此,您能否提供您当前面临的问题的详细信息,以便我们能够为您提供帮助?@Edric我补充道,但我认为在本例中,如果组件在root.module或routing.module中,我缺少组件的声明?@Edric如果我将声明放在routing.module中,它会起作用,但当我将它们放在app.module中时,它不会起作用。所以其他模块不从根模块继承声明,而只从我使用它们的模块继承声明?请您包括ngModel
的定义位置好吗?模板很可能来自此处未包含的组件,因此,您能否提供您当前面临的问题的详细信息,以便我们能够为您提供帮助?@Edric我补充道,但我认为在本例中,如果组件在root.module或routing.module中,我缺少组件的声明?@Edric如果我将声明放在routing.module中,它会起作用,但当我将它们放在app.module中时,它不会起作用。所以其他模块不从根模块继承声明,而只从我使用它们的模块继承声明?但在路由模块或应用程序模块中,我在哪里声明组件?根据我的理解,如果我在根模块上声明它们,它们应该对每个子模块都可用。你是对的,但我教过如果我在根模块上声明它们,它们将对路由模块可用,它们不是服务。服务是唯一可以以这种方式公开的东西。组件需要放在一个模块中,如果它们需要在多个模块中使用,则导入第一个模块(其中第一个模块有导出)。我理解这一点。我不知道的是,如果我想在其他模块中使用在父模块中声明的组件,我必须将它们导出,以便其他模块可以使用它们。这就是困扰我的原因。非常感谢。但是在路由模块或应用程序模块中,我在哪里声明组件?根据我的理解,如果我在根模块上声明它们,它们应该对每个子模块都可用。你是对的,但我教过如果我在根模块上声明它们,它们将对路由模块可用,它们不是服务。服务是唯一可以以这种方式公开的东西。组件需要放在一个模块中,如果它们需要在多个模块中使用,则导入第一个模块(其中第一个模块有导出)。我理解这一点。我不知道的是,如果我想在其他模块中使用在父模块中声明的组件,我必须将它们导出,以便其他模块可以使用它们。这就是困扰我的原因。非常感谢。