Ich kann nicht Packery mit Angular 2 mit angle-CLI und Typoskript 2.0 arbeiten. Ich verwende Packery 1.4.1 und die Typoskript-Definitionen für diese Version von DefinitelyTyped.Verwenden von Packery mit Angular 2
Das Problem besteht darin, dass der Packery-Verweis auf Outlayer nicht gefunden werden kann, wenn das Projekt mit ng serve ausgeführt wird.
Insbesondere die folgende Ausnahme wird aufgrund dessen, dass geworfen:
TypeError: Cannot set property 'position' of undefined at Object.utils.extend (eval at webpackJsonp.82.module.exports
Unter meinen Code für das Projekt ist.
-Skripte aus Winkel cli.json:
"scripts": [
"../node_modules/packery/dist/packery.pkgd.js"],
ich auch die abhängigen js Dateien versucht haben, das Hinzufügen aber die ausgelöste Ausnahme ist das gleiche:
"scripts": [
"../node_modules/packery/dist/packery.pkgd.js",
"../node_modules/get-size/get-size.js",
"../node_modules/outlayer/outlayer.js",
"../node_modules/ev-emitter/ev-emitter.js",
"../node_modules/fizzy-ui-utils/utils.js",
"../node_modules/desandro-matches-selector/matches-selector.js"
],
app.component.ts:
import { Component, ViewChild, AfterViewInit } from '@angular/core';
declare var Packery: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit
{
@ViewChild('grid') grid;
private pckry: any;
constructor() {}
ngAfterViewInit(){
this.pckry = new Packery(this.grid, {
itemSelector: '.grid-item'});
}
}
app.component.html
Ich möchte helfen, wie Packery in Angular 2 mit oder ohne Typings (Vanilla Js wäre in Ordnung für mich) zu laufen.
Haben Sie schon einmal das Gitter erneuern müssen? Wenn ja, wie hast du es geschafft? –
@JeremyThomas Ich war noch nicht in der Lage, das Gitter zu aktualisieren, ohne auch die Positionen jeder Fliese leider zurückzustellen. Ich erwäge tatsächlich, die Position im Backend nach dem Ziehen zu aktualisieren, damit sie nach einem Update in dieser Position bleiben. –
Ich habe es wirklich aufgegeben, Packery ohne Probleme mit Angular arbeiten zu lassen. Das Hauptproblem bestand darin, das Grid mit neuen Daten aus dem Backend zu aktualisieren - es schien einfach nie richtig zu funktionieren. Auch die Verwendung eines Gitters, das keine direkte Unterstützung für Angular bietet, macht keinen großen Sinn, da es zu viele Probleme mit der Angular-Integration geben wird. Ich habe daher das Raster mit Dragula neu geschrieben: https://github.com/valor-software/ng2-dragula Dragula "nur" für meinen Anwendungsfall "gearbeitet", da es viel bessere Kontrolle über Spalten und (feste) Positionierung von hat Artikel im Allgemeinen. –