Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么FormsModule在app.module中导入,而routing.module中的组件起作用?_Angular - Fatal编程技术网

Angular 为什么FormsModule在app.module中导入,而routing.module中的组件起作用?

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

我试图弄清楚angular是如何导入模块的,我不知道为什么它不能从根目录加载forms模块

...

@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中时,它不会起作用。所以其他模块不从根模块继承声明,而只从我使用它们的模块继承声明?但在路由模块或应用程序模块中,我在哪里声明组件?根据我的理解,如果我在根模块上声明它们,它们应该对每个子模块都可用。你是对的,但我教过如果我在根模块上声明它们,它们将对路由模块可用,它们不是服务。服务是唯一可以以这种方式公开的东西。组件需要放在一个模块中,如果它们需要在多个模块中使用,则导入第一个模块(其中第一个模块有导出)。我理解这一点。我不知道的是,如果我想在其他模块中使用在父模块中声明的组件,我必须将它们导出,以便其他模块可以使用它们。这就是困扰我的原因。非常感谢。但是在路由模块或应用程序模块中,我在哪里声明组件?根据我的理解,如果我在根模块上声明它们,它们应该对每个子模块都可用。你是对的,但我教过如果我在根模块上声明它们,它们将对路由模块可用,它们不是服务。服务是唯一可以以这种方式公开的东西。组件需要放在一个模块中,如果它们需要在多个模块中使用,则导入第一个模块(其中第一个模块有导出)。我理解这一点。我不知道的是,如果我想在其他模块中使用在父模块中声明的组件,我必须将它们导出,以便其他模块可以使用它们。这就是困扰我的原因。非常感谢。