【问题标题】:angular 5 Passing a variable or parameters to a service角度 5 将变量或参数传递给服务
【发布时间】:2018-02-22 20:24:33
【问题描述】:

您好,这可能非常简单,但我已经挣扎了 2 天。 我想将一个变量从 [(ngmodel)] 传递给我的服务 一个在天气组件中随处变化的字符串。 当我输入任何城市时。 我尝试了我能想到的一切,但没有成功, 那么我如何传递随我输入的城市而变化的 ngmodel 到服务网址。 我有这个获取函数的网址。 但是无论我尝试什么,我都无法改变变量?如果我对城市进行硬编码,onli 就可以了。 像这样 我的服务 ts

public globalVar='berlin';

   return this.http
             .get('http://api.openweathermap.org/data/2.5/weather?q='+'$globalVar'+'&APIkey=f0a4b73f313ac53530db02abf0781')
             .map((response: Response) => {
                 return <IPosts[]>response.json();
             })
             .catch(this.handleError);
     }

我尝试了多次,但无论我放入什么 角度拒绝使 globalVar 成为变量并仅显示 $globalVar + apikey=f0 等 在控制台日志中。

【问题讨论】:

    标签: angular


    【解决方案1】:

    你需要

      .get('http://api.openweathermap.org/data/2.5/weather?q= `${globalVar}&APIkey=f0a4b73f313ac53530db02abf0250781`)
    

    【讨论】:

      【解决方案2】:

      在您的输入字段上使用(ngModelChange) 事件来设置从模型到服务的值。

      例子:

      <input type="text" [(ngModel)]="model" (ngModelChange)="setValue($event)">
      
      @Component({...})
      export class FooComponent {
          setValue(value: string) {
              this.myService.value = value;
          }
      }
      

      此外,您在服务 URL 中的 ES6 语法中有错字。像这样使用模板字符串:

      public myVariable = 'world';
      
      // ...
      
      `Hello ${myVariable}`
      

      Template literals documentation.

      【讨论】:

      • 我尝试了所有方法,但两个答案都应该努力挑选。
      • 唯一可以归结为我必须将 url 中的所有内容分开,就像 get(this.code+this.city+this.api) 一样,url 中的自定义 var 没有工作。不幸的是
      • 再试一次,使用像````这样的反引号
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2014-09-28
      • 2017-09-17
      • 1970-01-01
      • 2019-05-05
      相关资源
      最近更新 更多