繁体   English   中英

如何在Angular2中创建服务?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM