Hallo Ich benutze Angular2 und wollte den Server holen und einige Werte für jede ID bekommen, die ich in ngFor bekomme.Aufruf einer Funktion in ngFor in angular2
Antwort
Besser tun solche Funktion auf jedes Element in ngOnInit in einem Abonnement, und dann sollten sie mit * ngFor nach der Umwandlung angezeigt werden.
und Änderung:
<div *ngFor="let item in items">
zu
<div *ngFor="let item of items">
werden Sie einen Code für die Art und Weise wie oben vorgeschlagen bereitstellen? – Keshav
Sie können Verwendung von benutzerdefinierten Richtlinie machen das Verfahren für jede Iteration zu nennen:
import { Directive, Output, EventEmitter, Input, SimpleChange} from '@angular/core';
@Directive({
selector: '[onCreate]'
})
export class OnCreate {
@Output() onCreate: EventEmitter<any> = new EventEmitter<any>();
constructor() {}
ngOnInit() {
this.onCreate.emit('dummy');
}
}
und dann können Sie es verwenden in Ihrem * ngFür den Aufruf der Methode in Ihrer Komponente:
<div *ngFor="let item of items">
<div *ngIf="item" (onCreate)="yourMethod(item)">
</div>
</div>
in Ihrer Komponente Sie diese Methode als anrufen:
yourMethod(item){
console.log(item);
}
klingen nicht sehr gut, aber die einfachste Art und Weise:
<div *ngFor="let item of items">
<span data-dummy="{{myFunction()}}" > here call a function that do something with 'item' and return something new <span>
</div>
Richtige Art und Weise:
@Directive({
selector: '[runDummyFunc]'
})
export class runDummyFunc {
constructor() {}
ngOnInit() {
this.runDummyFunc()
}
}
<div *ngFor="let item in items">
<span [runDummyFunc]="myFunction" > here call a function that do something with 'item' and return something new <span>
</div>
In Ihrer Klasse:
myFunction =():void=>{
console.log('whatever');
}
Die Verwendung von Interpolation zum Aufruf einer Funktion ist keine authentische Methode, da sie aufgrund von 'ngOnChanges' mehrfach aufgerufen wird. @ Xe4me –
@BhushanGadekar, ich weiß, das ist kein guter Weg, deshalb habe ich gesagt, klingt nicht gut, aber das ist, was er will, und er kann leicht eine Variable wie fire_once erstellen und es auf wahr stellen, wenn es ist einmal aufgerufen, wie auch immer, das ist kein guter Weg – Milad
Wie wäre es Ändern von Daten, bevor sie an *ngFor
in Typoskript selbst,
this.items.forEach((item,index)=>{
item=this.func(item,index);
})
func(item,index):string{
return item+ String(index); //do whatever you wish to do.
}
Die Vorlage ist nicht der Ort, das zu tun, Sie mögen, dass Ihre Daten in dem Komponentencode zu erhalten. Klingt so, als ob Sie etwas wie flatMap
eines Observablen verwenden möchten, mit dem Sie für jedes Element in der Quelle eine weitere Observable zurückgeben können. Dies könnte die Rückkehr eines http-API Anruf oder was auch immer (fiddle):
var ids = ["a", "d", "c"];
var lookupValues = { "a": 123, "b": 234, "c": 345, "d": 456 };
// given an id
function fakeApiCall(id) {
// given an id, return an observable with one entry: an object consisting
// of an 'id' property with that id value and a 'lookup' property with the
// value from lookupValues for that id
return Rx.Observable.just({ id: id, lookup: lookupValues[id] });
}
var o1 = Rx.Observable.from(ids); // 'a, d, c
var o2 = o1.flatMap(x => {
// here we get each value from o1, so we do an api call and return
// an observable from each that will have the values in that
// observable combined with all others to be sent to o2
return fakeApiCall(x);
});
o2.subscribe(x => {
document.write(JSON.stringify(x) + "<br/>");
});
// result:
// {"id":"a","lookup":123}
// {"id":"d","lookup":456}
// {"id":"c","lookup":345}
- 1. Aufruf einer externen Funktion in Angular2 injiziert
- 2. * ngFor eine Endlosschleife in angular2
- 3. ngControl mit ngFor in Angular2
- 4. ngfor Vorlage in angular2 und Argument in Funktion funktioniert nicht
- 5. Angular2 Komponente in ngFor Würfe Fehler (viewFactory ist keine Funktion)
- 6. Was bedeutet * in * ngFor in angular2?
- 7. Angular2 verschachtelt ngFor
- 8. Angular2 ngFor - Set ausgewählt
- 9. Angular2 async pipe funktioniert nicht in ngfor
- 10. Problem mit ngFor- Angular2
- 11. Angular2 Bind Array mit ngFor
- 12. Angular2: ngFor und bedingte Klasse
- 13. angular2 * ngfor und verschachtelte beobachtbaren
- 14. Angular2: Wie ist ngfor erweitert
- 15. Angular2 ngModel gegen ngFor Variablen
- 16. Angular2 ngFor Inhalt nicht auf Safari gerendert
- 17. Formulareingabewert in einer ngFor generierten Tabelle
- 18. Iterieren Sie zwei Arrays in * ngFor-- IONIC2/Angular2
- 19. Aufruf einer Funktion in einer Funktion in python3
- 20. Wie erzeugt man dynamisch ngModel mit * ngFor in Angular2?
- 21. Kann nicht verwenden * ngIF innerhalb * ngFor: angular2
- 22. create dynamic anchorName/Komponenten mit ComponentResolver und ngFor in Angular2
- 23. Angular2 Inline-Bearbeitung mit ngModel und ngFor
- 24. Aufruf einer Funktion in einer Header-Datei
- 25. Aufruf einer Funktion in einer ExtJS XTemplate
- 26. templateUrl mit einer Funktion in angular2
- 27. Verstehen Sie zuerst Ergebnis Angular2 ngFor
- 28. Angular2 ngFor - überspringen, wenn kein Wert
- 29. Access-Objekte ohne Rohr oder ngfor in angular2
- 30. Wie setze ich dynamische ID (* ngFor) in ionic2/angular2?
Klingt wie eine seltsame Anforderung. Was versuchst du zu erreichen? –
@ Günter Zöchbauer Zum Beispiel, generieren Sie einen Anzeigenamen der Artikeleigenschaften auf eine komplexe Art und Weise. Das ist überhaupt nicht komisch. – user2061057
Tun Sie es in Code und weisen Sie es jedem 'item' zu und verwenden Sie es dann einfach innerhalb' * ngFor'. Von solchen Funktionsaufrufen aus Vorlagenbindungen wird abgeraten. –