Angular2无法用javascript导入FormsModule

Angular2 unable to import FormsModule with javascript

本文关键字:导入 FormsModule javascript Angular2      更新时间:2023-09-26

我正在做Angular2英雄教程:https://angular.io/docs/ts/latest/tutorial/toh-pt1.html在纯Javascript(不是Typescript),我有麻烦导入表单模块如上所述:(描述仅适用于Typescript):

在为表单输入使用双向数据绑定之前,我们需要在Angular模块中导入FormsModule包。我们把它添加到NgModule的imports数组中。该数组包含应用程序使用的外部模块列表。

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';
import { AppComponent }  from './app.component';
@NgModule({
  imports: [
    BrowserModule,
    FormsModule
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

当我将Forms模块添加到我的app.module.js导入数组时,它无法找到模块:

zone.js:129未捕获错误:由模块'class2'导入的意外值'undefined'

这是我的app.module.js:

(function(app) {
  app.AppModule =
    ng.core.NgModule({
      imports: [ ng.platformBrowser.BrowserModule, ng.common.FORM_DIRECTIVES],
      declarations: [ app.AppComponent],
      bootstrap: [ app.AppComponent ]
    })
    .Class({
      constructor: function() {}
    });
})(window.app || (window.app = {}));

在我的node_modules文件夹中存在Forms模块。如果我从imports数组中删除"ng.common.FORM_DIRECTIVES",则不会抛出错误。

console.dir(ng)的内容为:

Object
    common:Object
    compiler:Object
    core:Object
    coreTokens:Object
    platformBrowser:Object
    platformBrowserDynamic:Object
    probe
    :
    inspectNativeElement(element /** TODO #9100 */)
    __proto__:Object

console.dir(ng.forms)的内容为:

undefined

对不起,我发现了错误。通常情况下,它与typescript或angular无关,我只需要在index.html文件中添加script标签来加载forms.umd.js:

<script src="../node_modules/@angular/forms/bundles/forms.umd.js"></script>

现在我可以用下面的代码导入表单模块,并且可以使用ngModule的功能:

ng.core.NgModule({
  imports: [ ng.platformBrowser.BrowserModule, ng.forms.FormsModule],
  declarations: [ app.AppComponent],
  bootstrap: [ app.AppComponent ]
})

尝试使用import { FORM_DIRECTIVES } from 'angular2/common';

来源:Angular 2中使用ngModel的双向绑定不起作用

编辑:

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FORM_DIRECTIVES } from 'angular2/common';
import { AppComponent }  from './app.component';
@NgModule({
  imports: [
    BrowserModule,
    FORM_DIRECTIVES
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

如果这不起作用,发布console.dir(ng);再次(使用此代码时)