2017-08-05 7 views
6

.htmlIdentifier bezieht sich auf ein privates Mitglied der Komponente

<offline-picks *ngFor="let pick of pickData" [data]="pick"></offline-picks> 

.ts

export class OfflineArticlesPage { 
    private pickData: picksModel[] = []; 
    constructor(private localCacheService: LocalCacheServiceProvider) { 
    } 
} 

Wenn ich die private member verwendet, wie oben gezeigt, zeigt er unter error.I'm mit Angular Language Service Erweiterung auf VS code Editor.

[Angular] Identifier 'pickData' bezieht sich auf ein privates Mitglied der Komponente

Hoffnung private members im Inneren des Bauteils keine ist guter Programmierstil verwendet? Aber als eine Lösung für das obige Problem wurde als below comment on the extension's repo gegeben.

Der Sprachdienst gibt diese Fehler aus, da sie während AOT Fehler sind. Irgendwann müssen Sie diese auflösen.

Wir haben geplant, den Zugang zu privaten und geschützten Mitgliedern in AOT zu unterstützen, aber das wird nicht bis mindestens 6.0 (Frühling des nächsten Jahres) landen.

Also können Sie mir sagen, was der beste Weg ist, Mitglieder auf den Komponenten zu deklarieren?

Update:

Ich benutze ionic cordova run android --prod --device CLI-Befehl mit den neuesten Ionic "ionic-angular": "3.5.3", .Aber es schön auf meinem Android device.That arbeitet, bedeutet es funktioniert gut mit dem AOT auch nicht? Warum dann dieser Fehler (oder eigentlich eine Warnung)?

+0

Die Warnung ist, weil 'private' Eigenschaften nur innerhalb der Komponente verwendet werden, sind sie definiert. Wenn Sie eine Eigenschaft in der Ansicht (und damit außerhalb dieser Komponente) verwenden möchten, müssen Sie sie als public deklarieren. Die Verwendung von 'privaten' Eigenschaften in den Ansichten ist also keine gute Übung. – sebaferreras

+1

Eigentlich ist dies ein Problem mit 'AoT'. Sie können eine große Diskussion darüber auf dem Link der folgenden Antwort sehen. Es war eine riesige Diskussion und große auch zu @sebaferreras – Sampath

Antwort

4

Sie müssen public sein, damit AoT funktioniert.

Sehen Sie hier für ein bisschen mehr Details: https://github.com/angular/angular/issues/11978

+1

Bitte sehen Sie die' Update: 'auf meinem Beitrag too.Your Gedanken darüber? – Sampath

+0

Ich weiß nicht, was Ionic tut (wenn es AoT oder JiT tut, aber wenn es funktioniert, bedeutet es, dass es JiT ist, da es nicht auf AoT funktionieren sollte) – Amit

+0

Ich habe viel über dieses Problem unter Verwendung des obigen Links erfahren. Danke viel :) – Sampath

Verwandte Themen