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