TypeError: Невозможно прочитать свойство UpdateXY из неопределенного в Object.stop anguar 5 - PullRequest
0 голосов
/ 09 мая 2018

У меня есть домашний компонент:

@Component({
  selector: 'gridster-general',
  templateUrl: './home.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
  encapsulation: ViewEncapsulation.None
})

это класс экспорта, он содержит инициализацию панели инструментов гридстера:

export class HomeComponent implements OnInit {

  options: GridsterConfig;
  dashboard: Array<GridsterItem>;
  widget:any;

  constructor(private dataService:DataService ) 
  { }

  ngOnInit() {
    this.options = {
      gridType: GridType.ScrollVertical,
      compactType: CompactType.None,
      margin:10,
      outerMargin: true,
      outerMarginTop: null,
      outerMarginRight: null,
      outerMarginBottom: null,
      outerMarginLeft: null,
      mobileBreakpoint: 640,
      minCols: 1,
      maxCols: 10,
      minRows: 1,
      maxRows: 100,
      maxItemCols: 100,
      minItemCols: 1,
      maxItemRows: 100,
      minItemRows: 1,
      maxItemArea: 2500,
      minItemArea: 1,
      defaultItemCols: 1,
      defaultItemRows: 1,
      fixedColWidth: 105,
      fixedRowHeight: 105,
      keepFixedHeightInMobile: false,
      keepFixedWidthInMobile: false,
      scrollSensitivity: 10,
      scrollSpeed: 20,
      enableEmptyCellClick: false,
      enableEmptyCellContextMenu: false,
      enableEmptyCellDrop: false,
      enableEmptyCellDrag: false,
      emptyCellDragMaxCols: 50,
      emptyCellDragMaxRows: 50,
      ignoreMarginInRow: false,
      draggable: {
        enabled: true,     
        stop:
        function (event, $element, widget) {

          this.widget = {
            x:$element.$item.x,
            y:$element.$item.y
          }
          HomeComponent.prototype.dataService.UpdateXY(this.widget);
        }

      },...

Я использовал HomeComponent.prototype, потому что я не смог получить доступ к переменной dataService с this.dataService

Я пытаюсь получить положение виджета в угловых 5 гридстерах и сохранить его в своей базе данных. Служба данных - это служба, которая взаимодействует с моей базой данных, а UpdateXY() - это функция, которая использует метод post для сохранения информации в базе данных. Я получаю эту ошибку:

ERROR TypeError: Cannot read property 'UpdateXY' of undefined
    at Object.stop (home.component.ts:106)
    at GridsterDraggable.dragStop (gridsterDraggable.service.ts:158)
    at HTMLDocument.eval (platform-browser.js:2628)
    at ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:4751)
    at ZoneDelegate.invokeTask (zone.js:420)
    at Zone.runTask (zone.js:188)
    at ZoneTask.invokeTask [as invoke] (zone.js:496)
    at invokeTask (zone.js:1540)
    at HTMLDocument.globalZoneAwareCallback (zone.js:1566)

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 09 мая 2018

Решил, а не;

stop:
        function (event, $element, widget) {

          this.widget = {
            x:$element.$item.x,
            y:$element.$item.y
          }
          HomeComponent.prototype.dataService.UpdateXY(this.widget);
        }

правильный формат был:

 stop: (event, $element, widget) => {

          this.widget = {
            x:$element.$item.x,
            y:$element.$item.y
          }
       this.dataService.UpdateXY(this.widget);}
...