Интеграция листовок angular v18 не работает

Я пытаюсь настроить новое приложение angular v18 с интеграцией карты-листовки, но хотя я настраиваю параметры листовки почти точно так же, как я настраивал их в рабочем приложении angular 17, карта просто не хочет отображаться правильно. . На данный момент это очень минимальная настройка, но трудности с отображением карты были своего рода узким местом... Может ли кто-нибудь помочь?

конфигурация приложения:

import {
  ApplicationConfig,
  provideExperimentalZonelessChangeDetection,
} from '@angular/core';
import { provideRouter } from '@angular/router';

import { routes } from './app.routes';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';

export const appConfig: ApplicationConfig = {
  providers: [
    provideExperimentalZonelessChangeDetection(),
    provideRouter(routes),
    provideAnimationsAsync(),
  ],
};

компонент карты ts:

import {
  Component,
  inject,
  AfterViewInit,
  ViewChild,
  ElementRef,
  OnInit,
} from '@angular/core';
import { MapService } from '../map.service';
import { MaterialModule } from '../../wcm-modules/material/material.module';

@Component({
  selector: 'app-map-layer',
  standalone: true,
  imports: [MaterialModule],
  template: ` <div id = "map-container">
    <div id = "map"></div>
  </div>`,
  styles: `
  .map-container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
  #map {
    height: 100%;
    width: 100%;
    position: relative;}
  `,
})
export class MapLayerComponent implements OnInit, AfterViewInit {
  constructor(private mapService: MapService) {}

  ngOnInit(): void {
    console.info('MapLayerComponent initialized!');
  }

  ngAfterViewInit(): void {
    console.info('Attempting to create map!');
    this.mapService.createMap('map');
  }
}

картографический сервис ТС:

import { Injectable } from '@angular/core';
import * as L from 'leaflet';

@Injectable({
  providedIn: 'root',
})
export class MapService {
  public map!: L.Map;

  // Function to create a map
  public createMap(mapId: string): any {
    console.info('Map Sercive create map function started!');
    this.map = L.map(mapId).setView([51.505, -0.09], 13);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
      attribution: '© OpenStreetMap contributors',
    }).addTo(this.map);
  }
}

Какие ошибки у вас в консоли?

Matthieu Riegler 28.05.2024 16:46

Нет, правда, это моя проблема. Все журналы консоли отображаются в правильном порядке, отсутствуют нерегулярные сетевые процессы, но также не отображается количество успешных запросов к поставщику карт — возвращаются только несколько фрагментов карты, но они не отображаются вообще или иногда в хаотичном виде.

mohammadalha 30.05.2024 15:25
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
2
176
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не смог воспроизвести ваш точный пример (поскольку у меня нет MaterialModule), но я думаю, что проблема в вашем селекторе CSS в map.component.ts.

map-container — это не класс, а идентификатор, используйте:

#map-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

Другие вопросы по теме