J'utilise dans mon projet le plugin ngx-leaflet , et angular-cli .
J'essaie d'utiliser le dépliant décrit dans la doc, par exemple:
Le problème est que lorsque j'essaie de compiler, j'ai l'erreur suivante:
Compilé avec:
ng serve --aot
Contexte ici:
J'ai essayé d'importer L
de différentes manières en utilisant:
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
Mais je ne trouve rien dans la documentation ni dans le github .
J'ai supprimé le module atm pour compiler, mais j'ai besoin d'une solution de contournement.
Voici le package.json
que j'utilise:
Voici le code à l'intérieur de mon composant, utilisateur de 'L'
:
@Component({
selector: 'app-map-screens-element',
templateUrl: './map-screens-element.component.html',
styleUrls: [
'./map-screens-element.component.scss',
],
})
export class MapScreensComponent implements OnInit {
/**
* setting map options
*/
public $mapOptions = {
// we use the layer openstreetmap
layers: [
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'),
],
zoom: 15,
center: L.latLng([48.866667, 2.333333]),
};
}
Et voici l'importation du module dans mon projet:
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
@NgModule({
imports: [
LeafletModule,
],
declarations: [
// ...
],
exports: [
// ...
],
})
export class SharedElementModule { }
Il vous manque l'importation de L sur votre composant. Ainsi:
import * as L from 'leaflet';
Après avoir cloné le angular-cli dans un nouveau projet vide, j'ai ajouté sockjs-client via NPM. Ensuite, j'ai essayé de créer une instance SockJS dans un service NG comme ceci. SockJs est juste un exemple pour un paquet npm non conforme:
import { SockJS } from 'sockjs-client';
//...
private socket: SockJs;
//...
this.socket = new SockJS(this.serverURI);
Cela a bien été compilé mais une erreur d’exécution s’est produite
SockJS n'est pas un constructeur
Après quelques recherches sur Google, je suis tombé sur une frappe angulaire pour rendre js-types disponibles pour le transpiler TypeScript https://www.typescriptlang.org/docs/handbook/tsconfig-json.html . Pour que cela fonctionne, j'ai dû ajouter des types en installant @ types/sockjs-client de NPM. Cela a livré l'erreur du compilateur
'SockJS' fait référence à un UMD global, mais le fichier actuel est un module . Pensez à ajouter une importation à la place.
Cette erreur signifie que les types sont connus de TypeScript transpiler mais pas explicitement importés. Vous devez importer les types pour indiquer explicitement à TypeScript que vous savez que vous utilisez un script externe dont l'existence ne peut pas être vérifiée par TypeScript lors de la compilation. La présence de ce paquet ne sera vérifiée que pendant l'exécution. L'instruction d'importation explicite ressemble à ceci
import * as SockJsClient from 'sockjs-client';
//...
private socket: SockJsClient.Socket;
//...
this.socket = new SockJsClient(this.serverURI);