如何在Angular 2项目中包含javascript文件?

时间:2017-03-15 10:39:07

标签: angular odoo-9

我是角度2的初学者,我有这个脚本,我需要在angular2项目中集成以从odoo获取一些数据:

const Odoo = require('odoo-connect');

const odoo = new Odoo({
    host: 'demo',
    port: 80
});

var project_list = [];

odoo.connect({
        database: 'database',
        username: 'admin',
        password: 'admin'
    })
    .then(client => {
        return client.call('project.project', 'search_read', [], {});
    })
    .then(projects => {
        for (var i = 0; i < projects.length; i++) {
            var project = projects[i];
            project_list.push(project['name'])
        }
        console.log(project_list);
    });

我只是想在一个简单的页面中显示数据,只是为了测试它,然后将它包含在主项目中。我尝试使用Angular-CLI和app.component.ts构建试用项目:

import {Component } from '@angular/core';
import { OnInit } from '@angular/core';
import { Input } from '@angular/core';
import * as connect  from 'odoo-connect';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit{

  private host:string;
  private port:number;

  @Input() project_list;

  constructor(){
    this.host='demo';
    this.port=80;
  }
  ngOnInit(){
    let  project_list : Array<any> = [];
    const odoo = new connect({
      host: 'demo9',
      port: 80
    });
    odoo.connect({
        database: 'database',
        username: 'admin',
        password: 'admin'
      })
        .then((client:any) => {
          return client.call('project.project', 'search_read', [], {});
        })
        .then((projects:any) => {
          for (let i = 0; i < projects.length; i++) {
            let project = projects[i];
            project_list.push(project['name'])
          }
          console.log(project_list);
        })
  }}

我在我的控制台中得到这个:webpack:编译成功,但在浏览器控制台中我得到了这个: 未捕获的TypeError:无法读取属性&#39; prototype&#39;未定义的

2 个答案:

答案 0 :(得分:0)

经过几次这样的讨论后,我无法在Angular 2中直接安装odoo-connect npm软件包。我尝试了所有我知道该怎么做并且接近但最终被一个人击败了JSONStream错误,意味着我可能需要一种不同类型的加载器,这意味着我可能需要修改webpack配置......呃。只有这么多时间在一个早晨。

然而,这个NPM包的工作方式与宣传的一样:

https://www.npmjs.com/package/angular2-odoo-jsonrpc

有一个例外:在完成注入的构造函数中:

constructor ( oodo : OodoRpcConnect ) 

确保包含&#34; private&#34;

constructor ( private oodo : OodoRpcConnect )

让红色的波浪消失。

否则我按照说明安装/使用完全按照他们的指示,它工作正常。

因此...

  • ng new MyProject
  • cd MyProject
  • npm install --save-dev angular2-odoo-jsonrpc
  • npm serve
  • (按照包装说明中的说明更改代码)
  • 利润!

我正在使用最新最好的Angular-CLI(今天升级)。如果您认为您的CLI可能已过期,请更新它:

https://www.npmjs.com/package/angular-cli#updating-angular-cli

答案 1 :(得分:0)

const Odoo = require('odoo-connect'); const odoo = new Odoo({     主持人:'demo',     港口:80 });

var project_list = [];

odoo.connect({         数据库:'DB',         用户名:'admin',         密码:'admin'     })     .then(client =&gt; {         return client.call('project.project','search_read',[],{});     })     .then(projects =&gt; {         for(var i = 0; i&lt; projects.length; i ++){             var project = projects [i];             project_list.push(项目[ '名称'])         }         的console.log(project_list);     });