[英]How to create a service in Angular2?
我是angular2的初学者,我正在构建此应用程序,在其中使用这段代码从Odoo数据库中获取一些数据,由于该应用程序正在增长,我只想在服务中实现它,但我没有知道如何以正确的方式进行操作,而我不知道该返回什么:
这是app.component.ts:
import { Component, OnInit } from '@angular/core';
import { OdooRPCService } from 'angular2-odoo-jsonrpc';
import { Http} from '@angular/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [OdooRPCService]
})
export class AppComponent implements OnInit{
projectList;
ngOnInit(){
let self = this;
self.projectList = [];
self.odooRPC.init({
odoo_server: "https://demo9"
});
self.odooRPC.login('DB', 'admin', 'admin').then(res => {
console.log('login success');
}).catch( err => {
console.error('login failed', err);
})
self.odooRPC.call('project.project', 'search_read', [], {}).then((projects:any) => {
if(projects){
self.projectList = projects;
}
})
}
constructor( private odooRPC: OdooRPCService){
}}
这是projects.service.ts:
import { Injectable } from '@angular/core';
import {Http, Response} from '@angular/http';
import {Observable} from 'rxjs';
import 'rxjs/Rx';
import 'rxjs/add/operator/map';
import {ProjectList}from'./projects';
import { OdooRPCService } from 'angular2-odoo-jsonrpc';
@Injectable()
export class ProjectsService {
public projectList;
constructor(private projectsservice:ProjectsService, private http:Http, private odooRPC: OdooRPCService) {}
getProjects(){
let self = this;
self.projectList = [];
self.odooRPC.init({
odoo_server: "https://demo"
});
self.odooRPC.login('DB', 'admin', 'admin').then(res => {
console.log('login success');
}).catch( err => {
console.error('login failed', err);
})
self.odooRPC.call('project.project', 'search_read', [], {}).then((projects:any) => {
if(projects) {
self.projectList = projects;
})
}
}}
和模型projects.ts:
export interface ProjectList {
name:string;
}
app.module.ts:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import {ProjectsService} from "./projects.service";
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [ProjectsService],
bootstrap: [AppComponent]
})
export class AppModule { }
谢谢。
您的构造函数
constructor(
private projectsservice:ProjectsService,
private http:Http,
private odooRPC: OdooRPCService
) {}
您不能在ProjectsService(本身)中注入ProjectsService。 我在课堂上看不到它的任何用法,那么为什么要注入它呢?
请阅读ng2 docs: 此处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.