是否可以从 Loopback 为 Angular2 生成服务?

Is it possible to generate services for Angular2 from Loopback?

这是关于 AngularJS JavaScript SDK

的文档

此示例非常适合 Angular。可以使用命令

生成 Angular 客户端库
$ lb-ng ../server/server.js js/lb-services.js

是否存在将 Angular2 与 Loopback 一起使用的简单方法?

编辑

我目前在这个主题上找到了什么。

  1. Issue 在 loopback-sdk-angular Github 存储库中讨论。
  2. 实现示例:BaseResource and Model基于BaseResource。
  3. 另一种方式 - 使用 upgrade 从 Angular 到 Angular2 直到 Loopback Angular 2 SDK 的正式实施。
  4. 我已经为 Angular 2 in fork of loopback-sdk-angular.
  5. 完成了代码生成器的 alpha 版本

编辑

  1. Loopback-sdk-builder (comment)

此时您可以使用 loopback-sdk-angular 和 loopback-sdk-angular-cli 包的 fork。

package.json:

"devDependencies": {
  //...
  "loopback-sdk-angular": "github:qeti/loopback-sdk-angular#188-angular2-support",
  "loopback-sdk-angular-cli": "github:qeti/loopback-sdk-angular-cli#37-angular2-support"
}

生成客户端代码 (TypeScript):

./node_modules/.bin/lb-ng ./server/server.js ./client/src/app/lb-services.ts -l angular2

用法示例:

import {Component,Injectable} from 'angular2/core';
import {UserApi as UserService} from './lb-services';
import {HTTP_PROVIDERS} from 'angular2/http';

@Component({
  selector: 'my-app',
  providers: [UserService,HTTP_PROVIDERS],
  template: 'some template'
})

@Injectable()
export class AppComponent {

  private login: string;
  private password: string;

  constructor(protected user: UserService) {}

  onLogin() {
    let self = this;
    // Example 1
    this.user.login({
      username: self.login,
      password: self.password
    })
    .subscribe(res => {
      // some actions on login
      this.getData();
    });
  }

  onLogout() {
    // Example 2
    this.user.logout().subscribe(() => {
      // some actions on logout
    });
  }

  public getData() {
    // Example 3
    this.user.count().subscribe((response: any) => {
      let lastRow = response.count;

      let data = this.user
        // Example 4
        .find({
          offset: 0,
          limit: 100
        })
        .subscribe(function(response: any) {
          // Process response
        });
    });
  }
}