Угловой 6, Невозможно привязать к 'org', так как это не известное свойство 'appCycleDirection' (Директива) - PullRequest
0 голосов
/ 24 июня 2018

У меня есть следующая директива:

import { Directive, Input, OnInit } from '@angular/core';
import {GoogleMapsAPIWrapper} from '@agm/core';

declare let google: any;
@Directive({
  // tslint:disable-next-line:directive-selector
  selector: 'appCycleDirection'
})
export class CycleDirectionDirective implements OnInit {

  @Input() org;
  @Input() dst;
  @Input() originPlaceId: any;
  @Input() destinationPlaceId: any;
  @Input() waypoints: any;
  @Input() directionsDisplay: any;
  @Input() estimatedTime: any;
  @Input() estimatedDistance: any;
  constructor(private gmapsApi: GoogleMapsAPIWrapper) { }

  ngOnInit() {
    console.log(' In directive ');
    console.log(this.org);
    this.gmapsApi.getNativeMap().then(map => {
      const directionsService = new google.maps.DirectionsService;
      const directionsDisplay = new google.maps.DirectionsRenderer;
      directionsDisplay.setMap(map);
      directionsService.route({
              origin: {lat: this.org.latitude, lng: this.org.longitude},
              destination: {lat: this.dst.latitude, lng: this.dst.longitude},
              waypoints: [],
              optimizeWaypoints: true,
              travelMode: 'TRANSIT'
            }, function(response, status) {
                        if (status === 'OK') {
                          directionsDisplay.setDirections(response);
                          console.log(response);
                        } else {
                          window.alert('Directions request failed due to ' + status);
                        }
      });

    });
  }
}

Я использую эту директиву в html другого компонента следующим образом:

<agm-map *ngIf="Address !== undefined" [latitude]="lat" [longitude]="lng" [zoom]="zoom">
    <appCycleDirection *ngIf="dst !== undefined"  [org]="org" [dst]="dst"></appCycleDirection>
    <agm-marker  [style.height.px]="map.offsetHeight"  [latitude]="lat" [longitude]="lng"></agm-marker>
</agm-map>

Я добавил директиву в массив объявлений и экспортировалмассив внутри корневого модуля app.module.ts.

Даже я импортировал в компонент с HTML-страницей выше.

Но когда я запускаю код, он выдает следующую ошибку

> Uncaught (in promise): Error: Template parse errors: Can't bind to
> 'org' since it isn't a known property of 'appCycleDirection'.
> ("[latitude]="lat" [longitude]="lng" [zoom]="zoom">
>     <appCycleDirection *ngIf="dst !== undefined"  [ERROR ->][org]="org" [dst]="dst"></appCycleDirection>
>     <agm-marker  [style.height.px]="map.offsetHeight"  ["): ng:///LayoutModule/FindCycleComponent.html@9:50 Can't bind to 'dst'
> since it isn't a known property of 'appCycleDirection'. ("lat"
> [longitude]="lng" [zoom]="zoom">
>     <appCycleDirection *ngIf="dst !== undefined"  [org]="org" [ERROR ->][dst]="dst"></appCycleDirection>
>     <agm-marker  [style.height.px]="map.offsetHeight"  [latitude]="l"): ng:///LayoutModule/FindCycleComponent.html@9:62
> 'appCycleDirection' is not a known element:
> 1. If 'appCycleDirection' is an Angular component, then verify that it is part of this module.
> 2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("> <agm-map
> *ngIf="cycleAddress !== undefined" [latitude]="lat" [longitude]="lng" [zoom]="zoom">
>     [ERROR ->]<appCycleDirection *ngIf="dst !== undefined"  [org]="org" [dst]="dst"></appCycleDirection>
>     <agm-m"): ng:///LayoutModule/FindCycleComponent.html@9:4

Пожалуйста, поправьте меня, если я ошибаюсь.Много времени пытался понять сам, но ничего не смог найти.

1 Ответ

0 голосов
/ 24 июня 2018

Оберните appCycleDirection в <ng-container>, потому что вы используете * ngIf:

<ng-container  *ngIf="dst" >
    <appCycleDirection  [org]="org" [dst]="dst"></appCycleDirection>
</ng-container>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...