This project was generated with Angular CLI version 9.1.1.
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
Run ng test
to execute the unit tests via Karma.
Run ng e2e
to execute the end-to-end tests via Protractor.
To get more help on the Angular CLI use ng help
or go check out the Angular CLI README.
"scripts": {
"ng": "ng",
//serve inicia a aplicação localhoost e -o abre no default browser
"start": "ng serve -o",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
npm install [email protected] [email protected]
no styles.css inserir o import do bootstrap e font-awesome
no HTML pode ser usado *ngIf, se for falso o elemento some se for verdadeiro aparece tanto ele como seus filhos
<table class='table' *ngIf = 'products && products.lenght'>
só ira mostrar a tabela se houver algum elemento na tabela
for...of = for(let i=0;...)
let names = ['ana', 'jeff',...]
for (let n of names) {
console.log(n); // result ana, jeff...
}
for...in propriedades objeto
let names = ['ana', 'jeff',...]
for (let n in names) {
console.log(n); // result 0, 1... (id)
}
[src]="product.imageUrl
<input [(ngModel)] = 'list'>
no app.module
@NgModule({
Usado para declarar componentes para ficar visivel aos demais
declarations: [
AppComponent,
ProductListComponent
],
Usado para declarar bibliotecas do angular ou terceiros usadas
imports: [
BrowserModule,
FormsModule
],
bootstrap: [AppComponent]
})
Pipe permite transformar dados antes de mostrar
{{ product.productName | lowercase }}
custom pipe na pasta shared
BUSCA
get fullname(): string {
return this.lastName + ', ' + this.firstName;
}
console.log(this.fullname);
set quantity(value: number) {
this.recalculate(quantity);
}
this.quantity = 10;
SERVICE classe com proposito especifico, independente de componentes distribui dados ou logica atraves dos componentes
Usa atraves de Dependency Injection (classe recebe instancias de objetos que precisa, chamamos de dependencias, de uma fonte externa, ao inves de criar estas)
@Injectable({
provideIn: 'root'
})
Component injector disponivel apenas para o componente e nested component(componente filho)
Exemplo no product-list.component.ts
@Component({
templateUrl: '...',
providers: [ProductService] //serviço disponivel para este componente e seu filho (star)
})
a Injeção de dependencias e feita no constructor dentro da classe do componente
constructor(private productService: ProductService) {
}
CLI
criar componente automatico
--flat sem pasta
As rotas sao configuradas na module
criar guard para proteger rotas
criar modulos
shared modulos (-m fala para importar o novo modulo no product.module)