Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Quais as Diferenças nas Sintaxes de Associação dos Eventos e Diretivas do Angular?

<section class="container">
  <header class="header d-flex">
    <h2 class="ff-inter">Meu Mural</h2>
    <div class="buscar-pensamentos">
      <input
        type="search"
        class="filtro"
        placeholder="O que você procura?"
        autofocus
        [(ngModel)]="filtro"
        (keyup)="pesquisarPensamentos()"
      >
      <img src="/assets/imagens/lupa.png" alt="Lupa azul">
    </div>
    <h2 class="ff-inter">Meu Mural</h2>
    <button routerLink="/criarPensamento" class="botao">Adicionar pensamento</button>
  </header>
  <div class="mural" *ngIf="listaPensamentos.length > 0, else semPensamentos">
    <div *ngFor="let pensamento of listaPensamentos">
      <app-pensamento [pensamento]="pensamento"></app-pensamento>
    </div>
  </div>
</section>
<app-botao-carregar-mais
  [haMaisPensamentos]="haMaisPensamentos"
  (click)="carregarMaisPensamentos()"
>
</app-botao-carregar-mais>
<ng-template #semPensamentos>
  <div class="ff-inter sem-pensamentos">
    <p>Ainda não há pensamentos cadastrados!</p>
  </div>
</ng-template>

No código acima do listar-pensamento.component.html da aula atual temos várias formas de associar a lógica do Angular ao HTML da página.

Exemplos:

-> (keyup), (click): Pelo que entendi essa sintaxe, quando separados por parenteses, são de listeners de eventos, que após podem chamar uma função, estou correto?

-> [haMaisPensamentos]: Não entendi direito qual a sua utilidade, seria para passar parâmetros para a tag filha?

-> *ngFor, *ngIf: Está sintaxe com os asteríscos a frente, serve para implementar lógica ao HTML? Estou correto?

-> [(ngModel)]: Está sintaxe com parenteses e colchetes, tem uma função específica?

-> {{}}: Sintaxe das chaves duplas, serve para substituir uma parte do HTML com um atributo do component.ts?

-> #semPensamentos: Sintaxe com #, qual é a sua função?

Qual a diferença e quando devo usar em cada caso, seria interessante haver uma explicação básica de quando e como usá-las

1 resposta
solução!

Olá, Lorenzo! Tudo bem?

Vamos entender melhor essas sintaxes do Angular:

  1. Eventos com parênteses (evento): Essa sintaxe é usada para associar eventos do DOM a métodos do seu componente. Por exemplo, (keyup)="pesquisarPensamentos()" significa que toda vez que a tecla for liberada, o método pesquisarPensamentos() será chamado.

  2. Propriedades com colchetes [propriedade]: Essa sintaxe é usada para binding de propriedades. No exemplo [haMaisPensamentos]="haMaisPensamentos", você está passando o valor da propriedade haMaisPensamentos do componente pai para o componente filho app-botao-carregar-mais. Isso é útil para comunicação entre componentes.

  3. Diretivas estruturais com asterisco *ngFor, *ngIf: Essas são diretivas que alteram a estrutura do DOM. *ngFor é usado para iterar sobre uma lista e renderizar elementos para cada item, enquanto *ngIf é usado para renderizar um elemento apenas se a condição for verdadeira. Elas permitem adicionar lógica ao HTML.

  4. Two-way data binding [(ngModel)]: Essa sintaxe combina o binding de propriedade e o binding de evento em um só, permitindo que o valor do input e a propriedade no componente estejam sempre sincronizados. Por exemplo, [(ngModel)]="filtro" faz com que qualquer mudança no input atualize o valor de filtro no componente, e vice-versa.

  5. Interpolação {{}}: As chaves duplas são usadas para interpolação de dados, ou seja, para exibir valores de propriedades do componente no template. Por exemplo, {{ nome }} mostraria o valor da propriedade nome no HTML.

  6. Template reference #referencia: O uso do # é para criar uma referência a um elemento do DOM dentro do template. Isso permite que você interaja com o elemento diretamente no componente. No seu exemplo #semPensamentos, você está criando uma referência que pode ser usada para acessar o elemento dentro do seu componente.

Cada sintaxe se aplica a um contexto diferente de acordo com sua função. Quando estiver em dúvida sobre qual utilizar, pode consultar essa explicação.

Espero que tenha ajudado. Em caso de dúvidas, conte sempre com o fórum!

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!