2017-02-13 44 views
1

我想在构造函数(或函数)内部创建一个变量。我不想在整个课堂上创作。那可能吗?angular2在构造函数中创建一个变量

这是我的代码

import { Component, OnInit } from '@angular/core'; 
import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 
import { CustomValidators } from 'ng2-validation'; 
import { TranslatorService } from '../../../../core/translator/translator.service'; 
import { CarBrandService } from '../car-brand.service'; 
import { Response } from '../../../../shared/models/response'; 
import { SessionService } from '../../../../shared/services/session/session.service'; 
import { ServerService } from '../../../../shared/services/server/server.service'; 
import { ToasterService, ToasterConfig } from 'angular2-toaster/angular2-toaster'; 
import { Router } from '@angular/router'; 
import { CarBrand } from '../car-brand'; 
import { SharedModule } from '../../../../shared/shared.module'; 
import { Table } from '../../../../shared/models/table'; 
import { TableRow } from '../../../../shared/models/table-row'; 
import { TableAction } from '../../../../shared/models/table-action'; 
import { ListTableComponent } from '../../../../shared/components/list-table/list-table.component'; 

@Component({ 
    selector: 'car-brand-index', 
    templateUrl: './index.component.html', 
    styleUrls: ['./index.component.scss'], 
    providers: [CarBrandService, Response, SessionService, ServerService,    ListTableComponent, TableAction, Table, TableRow] 
}) 
export class CarBrandIndexComponent implements OnInit { 
    error : String; 
    total : number; 
    items : Array<CarBrand>; 
    table : Table; 
    constructor(public translator: TranslatorService, private mainService : CarBrandService, public sessionService : SessionService, public response : Response, private toasterService: ToasterService, private router: Router) { 

    var action : TableAction; 
    action.value = "/view/"; 
    action.type = "link"; 
    this.table.actions.push(action); 
    var action : TableAction; 
    action.value = "/edit/"; 
    action.type = "link"; 
    this.table.actions.push(action); 
    this.table.columns = ["MODULES.COMMON.LOGO", "MODULES.COMMON.NAME", "MODULES.COMMON.ACTIONS"];  
    this.getItems(1,10); 
    } 

    getItems(pageNumber : number, pageSize : number){ 
//Do something 
      });   
     } 
     else 
      this.error = result.code; 
    }); 
    } 
    ngOnInit() { 
     } 
} 

这是TableAction

export class TableAction { 
    type : String; 
    value : String; 
    name : String; 
    icon : String; 
} 

但在下面一行 VAR行动:TableAction; 它告诉我,行为是未定义的。有没有办法解决这个问题,而不需要在类下面声明var?

+0

它的未定义,因为你永远不会初始化我认为的值。所以请尝试让动作:TableAction = new TableAction(); – Zyga

回答

1

var action:TableAction;你只是告诉'行动'类型。现在,如果您尝试分配类似{a:1,b:2}这样的操作,您将看到一个错误。如果你写var操作:TableAction = new TableAction() - 你将在你的范围(构造函数/函数)中拥有一个实例,并且为变量'action'定义一个类型。

建议:使用let而不是VAR

let action = new TableAction(); 

的将其用关键字定义的变量A型行为“让我们更具可预测性。

constructor() { 
    let action1 = new TableAction("/view/", "link"); 
    this.table.actions.push(action1); 

    let action2 = new TableAction("/edit/", "link"); 
    this.table.actions.push(action2); 
    // ... 
} 

export class TableAction { 
    type : String; 
    value : String; 
    name : String; 
    icon: String; 

    constructor(value, type) { 
    this.value = value; 
    this.type = type; 
    } 
} 
1
var action : TableAction 

是一个声明。

var action : TableAction=new TableAction(); 

var action : TableAction = {}; 

是一个定义。 您正在尝试设置未定义的action的对象属性

相关问题