2017-08-25 83 views
4

我只是要通過角4個教程和有承諾的問題:角4個需要進口無極

我的服務:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class ContentService { 

    constructor() { } 

    getProviders() : Promise<any> 
    { 
    return Promise.resolve(["a","b","c"]); 
    } 

    getProviderByName(name : string) : Array<String> 
    { 
    return ["a","b","c", name]; 
    } 
} 

伍不能找到「無極」因爲沒有爲它導入。 但在教程和幾個例子中,我找不到任何導入。

我錯過了什麼? 如何在Ng 4中使用這個承諾?編輯: 這是我的項目配置。謝謝你們。我確定我現在可以修復它。但我仍然想知道我是如何遇到這個問題的。由於這是一個1個月大NPM安裝..

tsconfig.json:

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "outDir": "./dist/out-tsc", 
    "sourceMap": true, 
    "declaration": false, 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "target": "es5", 
    "typeRoots": [ 
     "node_modules/@types" 
    ], 
    "lib": [ 
     "es2016", 
     "dom" 
    ] 
    } 
} 

的package.json:

"private": true, 
    "dependencies": { 
    "@angular/animations": "^4.0.0", 
    "@angular/common": "^4.0.0", 
    "@angular/compiler": "^4.0.0", 
    "@angular/core": "^4.0.0", 
    "@angular/forms": "^4.0.0", 
    "@angular/http": "^4.0.0", 
    "@angular/platform-browser": "^4.0.0", 
    "@angular/platform-browser-dynamic": "^4.0.0", 
    "@angular/router": "^4.0.0", 
    "bootstrap": "^3.3.7", 
    "core-js": "^2.4.1", 
    "font-awesome": "^4.7.0", 
    "jquery": "^3.2.1", 
    "rxjs": "^5.4.1", 
    "zone.js": "^0.8.14" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.2.5", 
    "@angular/compiler-cli": "^4.0.0", 
    "@angular/language-service": "^4.0.0", 
    "@types/jasmine": "~2.5.53", 
    "@types/jasminewd2": "~2.0.2", 
    "@types/node": "~6.0.60", 
    "codelyzer": "~3.0.1", 
    "jasmine-core": "~2.6.2", 
    "jasmine-spec-reporter": "~4.1.0", 
    "karma": "~1.7.0", 
    "karma-chrome-launcher": "~2.1.1", 
    "karma-cli": "~1.0.1", 
    "karma-coverage-istanbul-reporter": "^1.2.1", 
    "karma-jasmine": "~1.1.0", 
    "karma-jasmine-html-reporter": "^0.2.2", 
    "protractor": "~5.1.2", 
    "ts-node": "~3.0.4", 
    "tslint": "~5.3.2", 
    "typescript": "~2.3.3" 
    } 
+0

承諾是全球性的。如果您有錯誤,這是因爲項目配置不正確。請指定項目詳細信息 - TypeScript,Webpack配置等。 – estus

回答

-1

嗨,你需要導入rxjs包對於那些在根模塊

import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/debounceTime'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 
import 'rxjs/add/operator/toPromise'; 
+0

rxjs的問題或包含的示例代碼中沒有提及。 – Igor

+0

我想例子是更詳細的,所以包括我的這個樣本@Igor – Robert

3

Promises不是lib,它們是本地的typ e,所以你不要導入它們。您需要承諾添加到您的庫:

tsconfig.json:

{ 
    "compilerOptions": { 
    "lib": ["es2015", "dom"] 
    } 
} 

記住要檢查你有一個承諾填充工具(如核心-JS),或者只需要支持已經支持承諾的瀏覽器。

+0

: 「lib」:[ 「es2016」, 「dom」 ] –