【发布时间】:2016-09-29 23:26:07
【问题描述】:
我在我的 Angular 2 指令中添加了 @Input,我收到一个错误,让我相信我没有导入包含 @Input 元数据的 Angular 2 模块。
zone.js:1263 GET http://localhost:8880/vendor/@angular/core/bundles/core.umd.js/src/metadata/directives.js 404 (Not Found)
证明当我删除@Input 元数据时,应用程序不会产生任何错误。
在我使用@Input 元数据的模块中,我从@angular/core/src/metadata/directives 导入{Input},我的IDE(IDEA 2016.2)自动为我添加了引用。
所以我需要通过@NgModule 导入正确的 Angular 2 模块 - 但我不知道如何确定它的名称或位置。
这是我的ApplicationModule(引导)模块定义:
import {NgModule} from '@angular/core';
import {BrowserModule, Title} from '@angular/platform-browser';
import {RouterModule} from '@angular/router';
import {UtilityModule} from '../utility/module';
import {I18NModule} from '../i18n/module';
import {FrameworkModule} from '../framework/module';
import {ApplicationComponent} from './application.component';
import {applicationRouting, applicationRoutingProviders} from './application.routing';
import {SandboxComponent} from './sandbox.screen/sandbox.component';
import {SpreadsheetComponent} from './spreadsheet.screen/spreadsheet.component';
@NgModule({
imports: [BrowserModule, RouterModule, UtilityModule, I18NModule, applicationRouting, FrameworkModule],
providers: [Title, applicationRoutingProviders],
declarations: [ApplicationComponent, SandboxComponent, SpreadsheetComponent],
bootstrap: [ApplicationComponent]
})
export class ApplicationModule {}
这是我的FrameworkModule,我尝试在其中使用@Input:
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {TUT_FRAMEWORK_DIRECTIVES} from './directives/index';
import {TUT_FRAMEWORK_COMPONENTS} from './components/index';
@NgModule({
imports: [BrowserModule],
providers: [],
declarations: [TUT_FRAMEWORK_DIRECTIVES, TUT_FRAMEWORK_COMPONENTS],
exports: [TUT_FRAMEWORK_DIRECTIVES, TUT_FRAMEWORK_COMPONENTS]
})
export class FrameworkModule {}
大概我需要将 Angular 2 模块导入添加到这些文件之一以提供 @Input 的实现
一般来说,Angular 2 提供的模块列表在哪里,我如何确定哪些模块对应于 Angular 2 的哪些功能?
进一步研究
来自 Angular 网站(API 文档):
https://angular.io/docs/ts/latest/api/
@angular/core
Input
https://angular.io/docs/ts/latest/api/core/index/Input-interface.html
从@angular/core/index导出,定义在@angular/core/src/metadata/directives.ts
关于我需要在引导模块定义中包含的内容,我不确定如何解释上述任何信息......(也许我在叫错树)
【问题讨论】:
-
你当前拥有的所有 Angular 模块的列表都在你的 package.json 中你能显示你在那个文件中有什么吗?
-
也许我误解了你的问题——你想知道从哪里导入输入。通常,您可以在 angular website 上找到特定指令或对象的位置。在您的情况下,输入位于 angular/core 中,因此您可以编写
import { Input } from @angular/core; -
您使用的是哪个版本的 angular2?
-
我已经加载到我的开发系统中的 Angular 2 包的列表在我的 package.json 文件中——我可能会或可能不会决定在我的应用程序中使用其中的任何一个(例如,我添加了它们)到我的 package.json 以备日后需要它们,但尚未引用其中的一个或多个)
-
@Neoheurist 我在 Github 上打开了一个问题,要求提供 Angular API 提供的所有模块的官方列表。这是link。我们会看看会发生什么!
标签: angular