2017-02-13 2 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; 
} 

Но в следующей строке вар действия: TableAction; Он говорит мне, что действие не определено. Есть ли способ исправить это без havong, чтобы объявить var ниже класса?

+0

его не определено, потому что вы никогда не инициализируете ценность, которую я думаю. Поэтому попробуйте разрешить действие: TableAction = new TableAction(); – Zyga

ответ

1

var action: TableAction; Вы просто рассказываете о типе «действия». Теперь, если вы пытаетесь присвоить действие что-то вроде {a: 1, b: 2} - вы увидите ошибку.

, но если вы пишете действие var: TableAction = new TableAction() - у вас будет экземпляр в вашей области действия (contructor/function) по вашему желанию, а также определите тип переменной «action».

Совет: используйте пусть вместо вар

let action = new TableAction(); 

Поведение переменных, которые были определены с ключевым словом «давайте более предсказуемы.

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, который не определен

Смежные вопросы