找不到名字Promise Angular2

时间:2016-10-22 20:18:09

标签: angular

我是新手,我正在按照教程进行操作。我的代码是从教程视频中逐字逐句的,但是我的代码并非如此。我收到错误"找不到姓名'承诺'我无法弄清楚原因。有谁知道我为什么会收到这个错误?

import {Control} from 'angular2/common'

export class UsernameValidators{
static shouldBeUnique(control: Control){

return new Promise ((resolve) => {

setTimeout(function(){
  if(control.value == "andy")
  resolve({shouldBeUnique: true})
else
resolve(null);
}, 1000);

});

}
  static cannotContainSpace(control: Control){
if (control.value.indexOf(' ') >=0)
return {cannotContainSpace: true};
return null;

  }
}

2 个答案:

答案 0 :(得分:0)

您似乎使用的是Angular2的测试版。以下答案假设您正在使用:

    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",

如果您使用的是Angular 2.0.0或更高版本,则可以执行以下操作:

import { FormControl } from "@angular/forms";
import { Promise } from "./path/to/node_modules/es6-promise";

export class UsernameValidators {
    static shouldBeUnique(control: FormControl) {

        return new Promise((resolve) => {

            setTimeout(function () {
                if (control.value === "andy")
                    resolve({ shouldBeUnique: true });
                else
                    resolve(null);
            }, 1000);

        });

    }
    static cannotContainSpace(control: FormControl) {
        if (control.value.indexOf(" ") >= 0)
            return { cannotContainSpace: true };
        return null;

    }
}

答案 1 :(得分:0)

如果您的经验找不到名称'Promise'。,大多数情况下您已经更改了基本设置中的某些文件,或者您可能没有成功完成节点包安装。 Angular2不再使用typings包。

解决方案:

  • 克隆以下存储库https://github.com/angular/quickstart
  • 在项目目录中运行npm install并确保其成功完成
  • 现在将您的应用程序项目文件夹复制并配置到克隆的新文件夹中 现在这将完美地运作。