• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Angular2 - przydzielenie wartości do zmiennej

Object Storage Arubacloud
0 głosów
339 wizyt
pytanie zadane 20 lutego 2017 w JavaScript przez zgrybus Pasjonat (24,860 p.)
edycja 20 lutego 2017 przez ScriptyChris

Dzień dobry. Jak przydzielić wartość do zmiennej z kodu?

Na razie zrobiłem coś takiego:

<div *ngIf="!(lookupModel && lookupModel[displayProperty]) && ((_items | filter:search:displayProperty).length === 1)">
   <div [lookupModelChange]="(_items | filter:search:displayProperty)">
      {{lookupModelChange[displayProperty]}}
  </div>
</div>

Ale niestety dostaje:

Can't bind to 'lookupModelChange' since it isn't a known property of 'div'.

Jakieś pomysły?

komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Czy lookupModelChange jest zadeklarowane w komponencie?

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
Tak, jako Output. Zmieniłem koncepcje, jutro podeślę. Ogólnie zaczęło to działać, ale przy próbie zmiany wartości wywala mi dziwny błąd ( jutro podeśle wszystko :) )
komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli korzystasz z @Output to musisz użyć EventEmittera w komponencie, któy emituje onEmit w komponencie, któy nasłuchuje:

https://angular.io/docs/ts/latest/api/core/index/EventEmitter-class.html

https://toddmotto.com/component-events-event-emitter-output-angular-2

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
Wiem wiem. Wszystko zrobione przez Emittera :)

Jutro Ci podeśle inne rozwiązanie, niestety to nie działa :(
komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)
Ale co Ty chcesz zrobić? EventEmitter - jak sama nazwa wskazuje - emituje coś. Dokąd to emitujesz? Nie widzę innego komponentu, tylko "suche" divy z atrybutami, nie ma odniesienia do innego komponentu.
komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
Chce przypisać wartość z (_items | filter:search:displayProperty) do naszego Outputa. Powyższy kod jest zły, ponieważ w czasie emitowania wartość z lookupModelChange jest nieznana, dlatego też zmieniłem ten kod na inny. Niestety w tym momencie nie mam dostępu do kodu :)
komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli wartość podczas emitowania jest nieznana, to dodaj metodę ngOnChanges, która jako parametr przekazuje wartości zmienione podczas jednego cyklu event loop'a. Tam sprawdzaj, czy Twoja zmienna ma to, co chcesz i wtedy dopiero ją emituj (lub skorzystaj z jakiejś flagi, która pozwoli na emitowanie w innej metodzie komponentu).

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
A tak na przyszłość. Jak przypisać zmiennej z kodu wartość zmiennej lokalnej z elementu blokowego?
komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Zmiennej z wyższego scope chcesz przypisać wartość zmiennej scope blokowego (czyli let/const)? Raczej normalnie :)

class Test() {
    highScopeVariable: number = 0;

    someMethod(): void {
        const methodVariable: number = 123;

        if ( someCondition === true ) {
            let blockScopeVariable: number = methodVariable + 4;

            this.highScopeVariable = blockScopeVariable;
        }
    }    
}

 

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
Nie nie nie. Chodzi mi o zmienną z elementu blokowego, powiedzmy taką

*ngFor="let item of items"

jak przypisać taką zmienną item do naszej zmiennej z kodu?
komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Przekaż ją jako parametr funkcji do komponentu (pliku .ts), a we wnętrzu funkcji zrób z nią co chcesz.

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)

No tak, ale z jakiej racji wywoływać tą funkcje? Chyba, że jest jakiś mechanizm, dzięki któremu możemy wywołać funkcje gdy zmienna po prostu zaczęła istnieć. 

No bo wywołać funkcje przez clicka czy inne rzeczy łatwo, ale gdy zmienna jest gotowa?

coś jak to?

<div *ngIf="naszaZmienna" wywołanieFunkcji(naszaZmienna)>
</div>

No, nie mam pojęcia jak :D

komentarz 20 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Po prostu:

<div *ngIf="naszaZmienna">
    {{ wywołanieFunkcji(naszaZmienna) }}
</div>

 

komentarz 20 lutego 2017 przez zgrybus Pasjonat (24,860 p.)
O jezu. No nie wierzę. Nigdzie o tym nie doczytałem. Dzięki wielkie.

<3

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 18 marca 2019 w JavaScript przez Akiro Bywalec (2,910 p.)
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 21 kwietnia 2019 w C i C++ przez Akiro Bywalec (2,910 p.)
0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 31 marca 2019 w Inne języki przez Akiro Bywalec (2,910 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...