如何从模型函数获取值并在角度6中的url上传递值

时间:2018-08-30 07:53:31

标签: angular

Login.model.ts:

export class Login{
    access_token : string;
    token_type : string;
    expires_in : string;
    refresh_token : string;
    FirstName : string;
    LastName : string;
    Email : string;
    AccountNo : string;
    client_Id : string;
}

这是登录模型。用户登录后,我要使用AccountNo

Checkout.service.ts:

Login1 : Login[];

  async getAddress() {
            const address = await this.httpClient.get<Customer[]>('http://localhost:49422/api/customer/' +'{{login1.AccountNo}}' +'/profile/', { withCredentials: true })
                .toPromise();
            return address;
        }

我想使用该网址中没有从登录模型获得的那个帐户来获取相应的客户详细信息。登录和结帐是完全不同的组件。如何在角度6中实现此目的

1 个答案:

答案 0 :(得分:0)

您需要创建新服务以在组件和服务之间共享资源,这是通过称为dependency injection的属性完成的。您可以进一步了解here

步骤1:创建一个非常基本的loginDetail服务,并导入您的Login模型,并创建一个非常基本的setData和getData函数来接受和返回登录数据。

import { Injectable } from '@angular/core';
import { Login } from './path/to/login.model.ts';

@Injectable({
  providedIn: 'root'
})
export class LoginDetailService {

  loginData: Login;

  setData: void(data: Login) {
    this.loginData = data;
  }

  getData: Login() {
     if (this.loginData) return this.loginData;
     else return {
       error: 'no login data present'
     }
  }

  constructor() { }
}

第2步::将该服务导入您将在其中获取所有令牌和登录数据的位置。导入登录模型和此服务。

例如您正在使用登录服务来执行所需的操作

import { LoginDetailService } from './path/to/logindetail.service.ts';
import { Login } from './path/to/login.model.ts';
@Injectable({
  providedIn: 'root'
})
export class LoginService {

  loginData: Login;

  login(email, pass): Login {
     //perform login functions here and then i assume you will get the login 
     //data  and store it in some loginData variable which u need to
     //save in LoginDetailService

     this.loginDetailService.setData(loginData);
  }
  constructor(private loginDetailService: LoginDetailService) { }
}

现在,您已成功将数据保存在loginDetailService中,可以从导入并调用函数getData的任何组件或服务中检索该数据

步骤3:将此服务导入您的Checkout.service.ts并调用函数getData

 //assuming that u have imported the service and declared it in the constructor
 Login1 : Login = this.loginDetailService.getData();

  async getAddress() {
            const address = await this.httpClient.get<Customer[]>('http://localhost:49422/api/customer/' +Login1.AccountNo+'/profile/', { withCredentials: true })
                .toPromise();
            return address;
        }

希望这会有所帮助。 :)