Не удается найти обещание имени Angular2

#angular

#angular

Вопрос:

Я новичок в этом, и я следую руководству. Мой код дословно взят из обучающего видео, которое работает, но мой код — нет. Я получаю сообщение об ошибке «Не удается найти имя ‘Promise’, и я не могу понять, почему. У кого-нибудь есть представление о том, почему я получаю эту ошибку?

 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;

  }
}
  

Комментарии:

1. Вы ориентируетесь на ES6 в своем tsconfig?

Ответ №1:

ЕСЛИ вы не можете найти имя ‘Promise’., в основном, вы изменили некоторые файлы в базовой настройке или, возможно, вы не завершили установку пакета node успешно. Angular2 больше не использует typings package.

решение:

  • клонируйте следующий репозиторий https://github.com/angular/quickstart
  • запустите npm install в каталоге проекта и убедитесь, что он успешно завершен
  • теперь скопируйте и настройте папки вашего проекта приложения в клонированную новую папку, теперь это будет работать идеально.

Ответ №2:

Похоже, вы используете бета-версию 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. Я думаю, вы правы насчет бета-версии. Это могло бы это объяснить. Спасибо за информацию.