角2打字稿@injectable

角2打字稿@injectable

问题描述:

IM使用angular2版本2.0.0-rc.5 和我创建一个文件名userdetails.ts角2打字稿@injectable

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

export interface userdetails{ 
    userid: string, 
    password: string, 
    name: string, 
    sbu: string, 
    division: string, 
    position:string, 
    loggedin:boolean 
} 

@Injectable() 
export class Userdetails implements userdetails { 
    public userid: string = null; 
    public password: string = null; 
    public name: string = null; 
    public sbu: string = null; 
    public division: string = null; 
    public position: string = null; 
    public loggedin: boolean = false; 

    constructor(){ 

    } 
    isLoggedin(){ 
     return this.loggedin; 
    } 
    userSBUdetails(){ 
     return this.sbu; 
    } 
    getUserdetails(){ 
     return {userid: this.userid, 
       password: this.password, 
       name: this.name, 
       sbu: this.sbu, 
       division: this.division, 
       position: this.position, 
       loggedin: this.loggedin}; 
    } 
    resetDetails(){ 
     this.userid = null; 
     this.password = null; 
     this.name = null; 
     this.sbu = null; 
     this.division = null; 
     this.position = null; 
     this.loggedin = false; 
    } 
    setDetails(data){ 
     this.userid = data.userid; 
     this.password = null; 
     this.sbu = data.sbu; 
     this.division = data.division; 
     this.position = data.position; 
     this.loggedin = true; 
    } 

} 

,下一步我将其导入到app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule }  from '@angular/http'; 
import { AppComponent }  from './app.component'; 
import { routing, 
     appRoutingProviders } from './app.routing'; 
     //all child route 
import { DominoMenuRouting } from './domino.menu/domino.menu.routing'; 
import { MAPMenuRouting } from './map.menu/map.routing'; 
     //all component 
     //domino.menu 
import { DominoMenuComponent } from './domino.menu/domino.menu'; 
import { PizzaComponent } from './domino.menu/pizza/pizza'; 
import { ToppingComponent } from './domino.menu/topping/topping'; 
     //map.menu 
import { MAPMenuComponent } from './map.menu/map'; 
import { AdminUserComponent } from './map.menu/admin.user/admin.user'; 
import { DomUserComponent } from './map.menu/domino.user/domino.user'; 

import { LoginComponent } from './login/login'; 
import { MainMenuComponent } from './main.menu/main.menu'; 
import { Httpprovider } from './httpprovider'; 
import { Userdetails } from './userdetails/userdetails'; <<-- 

@NgModule({ 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    routing, 
    HttpModule, 
    DominoMenuRouting, 
    MAPMenuRouting, 
    Userdetails <<-- 
    ], 
    declarations: [ 
    AppComponent, 
    LoginComponent, 
    MainMenuComponent, 
    DominoMenuComponent, 
    PizzaComponent, 
    ToppingComponent, 
    AdminUserComponent, 
    DomUserComponent, 
    MAPMenuComponent 
    ], 
    providers: [ 
    appRoutingProviders, 
    Httpprovider 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { 
} 

但是当IM运行它,我得到一个错误说

VM60:18 Error: TypeError: Cannot read property 'type' of null(…) 

,但如果我删除userdetail s从app.module.ts应用程序工作正常, 它有空语句错误吗?

imports用于将其他模块导入到您的模块中。您的UserDetails不是模块,它是提供商。因此,将其从imports中删除,并将其添加到模块元数据中的providers。 PS:为什么它的价值,这里的命名约定是非常不规则的。

+0

omg我真傻,谢谢你!在我的命名规则中,我会做得更好 – Rommy