【问题标题】:Understanding Angular Import Statements了解 Angular 导入语句
【发布时间】:2018-10-12 23:04:49
【问题描述】:

我是 Angular 和 ES6 编写代码模型的新手。我一直在阅读有关 Angular 模块和 import 语句的文章,但问题很少

我来自 .NET 背景,可以关联组件、服务等中的导入语句

例如,

import { HttpClient } from '@angular/common/http';


  getIncidentData(): Observable<any> {
    return this._http.get('incidents.json');
  }
  • 我正在导入 HttpClient 模块并在我的代码中使用它的服务。或者简单地说,要使用其他类中定义的任何方法,我们需要先导入它。所以它可以理解

  • 同样在 NgModule 装饰中,在 import 语句中,我们导入它们。因为 Angular 模块(作为一个特性)定义了哪些模块可以被其组件、服务等使用。

这是我的问题

  • 在模块级别,我们执行 import 语句,但实际上我们并没有在那个地方使用来自它们的任何方法或变量,而是在单个组件、服务中使用它。为什么我们需要定义它那边?
  • 如果我们在模块级别定义它,我们是否也需要在组件级别重复它。在下面的示例中,我在 appModule 中导入了 HttpModule,是否需要在服务中导入它?组件、服务继承模块会自动导入吗?
  • 大多数外部模块的名称以“模块”结尾,但有些没有我们如何知道它是模块、组件或服务?

这里是一些示例

 import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    import { FormsModule } from '@angular/forms';
    import { UitkModule } from '@uimf/uitk';
    import { TableModule } from '@uimf/uitk/components/tables';
    import { HttpModule } from '@angular/http';

    import { AppComponent } from './app.component';
    import { CardComponent } from './card/card.component';

【问题讨论】:

标签: angular angular5


【解决方案1】:

回答您的问题

在模块级别,我们执行 import 语句,但实际上我们并没有在那个地方使用它们的任何方法或变量,而是在单个组件、服务中使用它。为什么我们需要定义它那边?

  • 模块就像是多个组件的容器
  • 组件级别:只需要导入你需要的组件(从你导入的模块中)

如果我们在模块级别定义它,我们是否也需要在组件级别重复它。在下面的示例中,我在 appModule 中导入了 HttpModule,是否需要在服务中导入它?组件、服务继承模块会自动导入吗?

  • 仅当您在代码中调用它时
  • 高亮然后 Ctrl + Space -> 将自动导入模块。但是,有时自动导入会导入错误的路径。你需要 做你的研究。

大多数外部模块的名称以“模块”结尾,但有些没有我们如何知道它是模块或组件或服务?

  • 元数据用于确定哪个是哪个。
  • 多次实施命名标准。就像在类名末尾添加服务一样。例如基础服务
  • @Injectable() -> 很可能是一个服务
  • @NgModule -> 模块
  • @Component -> 组件

在此处查看教程:https://angular.io/tutorial

【讨论】:

  • stackoverflow.com/users/7016839/jen #jen 感谢您的解释。只是几个问题。在我的项目中,我在组件中导入了 Observable,但没有在模块级别导入它。同样,我在组件级别而不是模块级别导入 MatTableDataSource,在模块级别导入 MatTableModule,而不是在组件级别和公共模块都包含在组件和模块。我在项目中看到它的方式也可能是错误的,但我想知道它背后的确切逻辑。
  • Observables 是声明性的(另一种不同类型的问题)。 MatTableDataSource 是一个类(不能真正导入模块中的类/组件)。对于 MatTableModule,只有 modules 可以在模块级别导入。您在组件级别使用 common 模块做什么?
  • 谢谢。我的理解是,我们在应用模块级别单独导入模块。和组件级别的类。但是当 CLI 在应用程序模块级别自动添加 import appcomponent from components 时,我开始怀疑了..
  • 另外,如果我需要一个可观察的组件,我是否需要在组件级别导入它。并且正确地说,模块需要在模块级别导入,模块内的类需要在组件级别导入。
  • 对于 Observable,您只需将其导入到组件级别。对于类,是的,您可以只在组件级别导入。如果您感到困惑,您可以随时使用 Angular 应用程序。如果您需要在模块级别导入某些内容,它会或多或少地告诉您。
猜你喜欢
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
相关资源
最近更新 更多