Есть ли способ получить доступ к ссылке этой внутренней подфункции в Angular 4? [Дубликат]

Pushkar Rathod спросил: 03 февраля 2018 в 12:01 в: angular

У этого вопроса уже есть ответ:

  • How to access the correct `this` inside a callback? 6 ответов

У меня есть метод в компоненте, как упомянуто здесь.

export class MapComponent implements OnInit {  map: any;
  dataLayer: any;
  infoBoxLayer: any;
  infobox: any;
  infoBoxCollection = [];LoadMapView() {
    var that = this;    var location = new Microsoft.Maps.Location(40.0583, -74.4057);    this.map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
      credentials: this.config.get('BingMapKey'),
      center: location,
      mapTypeId: Microsoft.Maps.MapTypeId.road,
      zoom: this.lastZoomLevel,
      liteMode: true,
      enableClickableLogo: false,
      showLogo: false,
      showTermsLink: false,
      showMapTypeSelector: false,
      showTrafficButton: true,
      enableSearchLogo: false,
      showCopyright: false
    });    // Create a layer to load pushpins to.
    this.dataLayer = new Microsoft.Maps.EntityCollection();
    this.infoBoxLayer = new Microsoft.Maps.EntityCollection();
    this.map.entities.push(this.infoBoxLayer);    var metadata = {
      Id: '12345',
      title: 'testing'
    }    NewPin = new Microsoft.Maps.Pushpin(location, { icon: '../icon/pin.png' });    this.map.entities.push(NewPin);    this.dataLayer.push(NewPin);    Microsoft.Maps.Events.addHandler(NewPin, 'click', pushpinClicked);    this.infobox = new Microsoft.Maps.Infobox(maps.getCenter(), {
        visible: false
    });    function pushpinClicked(e) {      if (e.target.metadata) {
        that.infobox.setMap(maps);
        that.infobox.setOptions({
          location: e.target.getLocation(),
          visible: true,
          showCloseButton: true,
          offset: new Microsoft.Maps.Point(0, 20),
          htmlContent: '<div class = "infy" style= "background-color: white;border: 1px solid lightgray; width:520px;">'
            + e.target.metadata + '</div>'
        });
        // push this infoBox
        that.infoBoxCollection.push(that.infobox);
        }
    }
}}

Я присвоил ссылку this "переменной that " в LoadMapView (), потому что я не могу получить локальную переменную в функции pushpinClicked, используя эта ссылка.

Есть ли вообще избежать переменной that "для обращения к ссылке этой переменной?

Я столкнулся с проблемой утечки памяти из-за" , что "переменная"

0 ответов