无法以角度获取构造函数中的值

时间:2019-02-11 13:55:54

标签: javascript angular typescript

这里的问题是,当我单击按钮时,我在按钮单击方法中设置了一个值,在构造函数中,我声明了该变量,但是我无法在下面获得该值,这是我的代码,并且在构造函数中未定义

     public dat = {
  "pexels-photo.jpeg": {
    "information": "laptop",
    "desc": {
      "mimetype": "image/jpeg",
      "id": "shsj44",
      "file_id": "pexels-photo.jpeg"
    },
    "_id": "shsj44"
  }
};
  fileid= "";
  constructor(){
    console.log(this.fileid);

    // HERE A URL HAS TO BE CALLED WITH PARAM AS FILEID;
  }

  getData(){
   Object.keys(this.dat).forEach(key => {
      var value = this.dat[key];
      // console.log(key +':',value["_id"]);
      this.fileid = value["_id"];
      console.log(this.fileid);

    });
  }

下面是我的堆叠闪电战:https://stackblitz.com/edit/angular-dr7ehj

我正在声明构造函数bcoz中的变量,我需要在构造函数中使用此值来调用一些信息

2 个答案:

答案 0 :(得分:0)

您没有在构造函数中声明变量,只需在构造函数中记录变量的值即可。

由于未分配值,您将在构造函数中获得未定义的信息,请参见下面的代码

fileid='information';
  constructor(){
    console.log(this.fileid);
  }

  getData(){
    this.fileid = "infomation Updated";
    console.log(this.fileid);
  }

它会在单击按钮时记录更新的信息。

答案 1 :(得分:0)

它正常工作。未定义console.log的值,因为您没有给它赋值,所以它已被声明但未定义;

您可以在声明它的地方或在构造函数本身内部给它一个初始值;

如果只希望单击时等于“信息”,则要将console.log移至getData()方法,单击该按钮将记录更新的fileId。

请记住,构造函数只会被调用一次,因此,如果要在按下按钮后进行记录,则需要将其移至getData方法。如果您有任何服务或其他任何服务,则可以将它们作为私有参数传递给构造函数,以后可以在getData方法或您拥有的任何其他方法中访问它们。

for (i = 1; i <= 30; i++) {
    tracker = parseInt(results.push(prompt("Enter your numbers", 'diceroll')));

}

您还可以利用ngOnChanges在每次特定值更改时触发一些东西

constructor(private service: MyService) {} // dont need to do anything in constructor

getData() {
    this.fileId = 'information'
    console.log(this.fileId);
    this.service(this.fileId); // or some other custom code here
}

在构造函数中调用url的问题最初是未定义参数,因此一开始您将发送无效的url。