我有一个DropdownProjectService
用对象调用的服务selectedProjects: Object = new Array();
我有 2 个功能,一个用于添加数据selectedProjects
,一个用于检索数据。
下拉项目.service.ts
export class DropdownProjectService {
selectedProjects: Object = new Array();
constructor(private http: Http) {
this.selectedProjects = new Array();
}
addProjects(project: Project){
this.selectedProjects.push(project);
console.log('this.selectedProjects in DropdownProjectService.addProjects()');
console.log(this.selectedProjects);
}
getProjects(){
console.log('this.selectedProjects in DropdownProjectService.getProjects()');
console.log(this.selectedProjects);
return this.selectedProjects;
}
}
我已经在这两个函数中记录了变量。在addProjects
函数selectedProjects
中显示对象,但在getProjects()
方法中,selectedProjects
是并且仍然是一个空数组。我想知道为什么会这样以及可以做些什么。如果我需要发布更多代码,我会,但现在我不知道要显示哪个代码。
应用程序.ts:
import 'rxjs/Rx';
import 'reflect-metadata';
import 'es6-shim';
import {Component, ViewEncapsulation, View, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChange, ElementRef, FormBuilder, provide, bind} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
import {bootstrap} from 'angular2/platform/browser';
import { DebugElementViewListener } from 'angular2/platform/common_dom';
import {ActualsComponent} from './actuals/actual.component';
import {ActualsFormComponent} from './forms/actuals-form.component';
import {ActualsService} from './actuals/actual.service';
import {HelloWorldComponent} from './hello-world/hello-world.component';
import {HelloWorldService} from './hello-world/hello-world.service';
import {UsersFormComponent} from './users/users-form.component';
import {UserService} from './users/user.service';
import {LoginComponent} from './login/login.component';
import {LoginService} from './login/login.service';
import {DropdownProjectService} from './elements/dropdown/dropdown-projects.service';
@Component({
selector: 'app',
templateUrl: './app/templates/main.html',
encapsulation: ViewEncapsulation.None,
directives: [ROUTER_DIRECTIVES, ActualsComponent, HelloWorldComponent, UsersFormComponent, LoginComponent],
injectables: [ActualsService, HelloWorldService, UserService, LoginService]
})
@RouteConfig([
{ path: '/login', component: LoginComponent, as: 'Login' },
{ path: '/', redirectTo: ['/Login'] },
{ path: '/actuals', component: ActualsComponent, as: 'Actuals'},
{ path: '/helloworld', component: HelloWorldComponent, as: 'HelloWorld'},
{ path: '/users', component: UsersFormComponent, as: 'Users' },
])
export class AppComponent { }
bootstrap(AppComponent, [
ROUTER_PROVIDERS, HTTP_PROVIDERS, DropdownProjectService,
provide(LocationStrategy, { useClass: HashLocationStrategy })
]);
下拉项目.ts
import {ROUTER_DIRECTIVES, RouteConfig, RouteParams, Router, RouterOutlet, RouterLink} from 'angular2/router';
import {FORM_PROVIDERS, FORM_DIRECTIVES, Control, NgClass, NgIf, CORE_DIRECTIVES} from 'angular2/common';
import {Component, Inject, Input, OnInit, OnChanges} from 'angular2/core';
import {Http, Headers, ContentHeaders, HTTP_PROVIDERS} from 'angular2/http';
import {ActualsComponent } from '../actuals/actual.component';
import {ProjectService} from '../../projects/project.service';
import {LoginService} from '../../login/login.service';
import {SearchPipe} from '../custom-pipes/search-pipe';
import {DropdownProjectService} from './dropdown-projects.service';
@Component({
selector: 'dropdown-projects',
templateUrl: 'app/templates/elements/dropdown-projects.html',
providers: [FORM_PROVIDERS, HTTP_PROVIDERS, ProjectService, LoginService],
directives: [ROUTER_DIRECTIVES, FORM_DIRECTIVES, RouterLink, CORE_DIRECTIVES, RouterOutlet],
pipes: [SearchPipe]
})
export class DropDownProjects implements OnInit, OnChanges{
projectdata: Object;
public showMenu: boolean;
constructor(public dropdownProjectService:DropdownProjectService,public loginService: LoginService, private http: Http, params: RouteParams) {
this.showMenu = false;
loginService.authenticate("user", "pwd");
this.projectdata = loginService.data;
}
addProject(project: Project) {
this.dropdownProjectService.addProjects(project);
console.log('project added');
}
}
这些组件和服务一团糟。我打算清理所有不使用的东西。我不喜欢草率的代码,但仍然无法帮助创建它...