获取angular2 component.ts上的本地IP

我在覆盆子PI中有一个Web应用程序和一个API. Web应用程序使用HTTP GET请求来显示内容

现在,在web应用程序component.ts中:

export class AppComponent implements OnInit {

    results = {};

    constructor(private http: HttpClient) {}
    ngOnInit(): void {

        var url = 'http://localhost:8000/api/';
        var endpoint = 'test/';

        this.http.get(url + endpoint).subscribe(data => {
          this.results = data['test'];
        })
    }
}

当我在覆盆子INSIDE上打开Web应用程序时,这种方法有效.
但是,当使用raspBerry的IP和应用程序正在运行的端口从其他设备打开Web应用程序时,我无法从API获取数据.

我认为这是因为’localhost’,并且一旦这个锉刀不能用STATIC IP设置我想要检索它的本地IP,做类似的东西:

ngOnInit(): void {

        var ip = <some code <-- HELP>
        var url = 'http://' + ip + ':8000/api/';
        var endpoint = 'test/';

        this.http.get(url + endpoint).subscribe(data => {
          this.results = data['test'];
        })
    }

我已经测试过,如果我手动将IP放在代码中,虽然它只是用于测试,但我不想手动输入.

解决方法

您可以通过window.location.origin获取原点.有关详细信息,请查看 here

ngOnInit(): void {

    var ip = window.location.origin // this will give you the ip:port
    //if you just want the ip or hostname you can use window.location.hostname
    var url =  ip + '/api/';
    var endpoint = 'test/';

    this.http.get(url + endpoint).subscribe(data => {
      this.results = data['test'];
    })
}

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...