Se você ainda não tem o Angular CLI instalado, rode:
npm install -g @angular/cli
Obs: Para instalar corretamente a versão do nodejs tem que ser 6x ou +
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save
ng new my-first-angular2 --style=sass --routing=true
Esse comando irá gerar um novo projeto nomeado my-first-angular2, nós iremos utilizar SASS como formatação de estilo padrão.
-> app
-> components
-> ...
-> components.module.ts
-> guards
-> auth.guard.ts
-> models
-> ...
-> model.ts
-> pages
-> ...
-> teste-page.ts
-> providers
-> ...
-> teste.service.ts
-> ...
-> app.routing.ts
ng g c COMPONENT
ou dentro de outro component:
ng g c COMPONENT1/COMPONENT2
ng g s SERVICE
Ex:
export class Model {
public constructor(
public provider: string,
public uid: string,
public name: string,
public nickname: string,
public image: string,
public crp: string,
public type: string,
public email?: string,
public id?: number
){}
}
Após criar o arquivo que irá modularizar os nossos components (components.module.ts), iremos adicionar no app.module.ts:
// ...
import { AppRoutingModule } from './app.routing';
import { ComponentsModule } from './components/components.module';
// ...
imports: [
// ...
AppRoutingModule,
ComponentsModule
],
// ...
Primeiro instale o jquery via npm: npm i --S jquery
Após a instalação adicione no componente que você quer utilizar: import * as $ from 'jquery'
<div *ngFor="let item of items; let i = index"></div>
<div *ngFor="let item of items | slice:0:10; let i = index"></div>
<div *ngIf="condition"></div>
Queremos esconder uma SideBar menu, no componente adicione:
...
opened: boolean;
constru...
openMenu() {
this.opened = true;
}
...
Na view do componente adicionamos o bind:
<!-- Um toggle button para abrir o menu -->
<a class="btn" (click)="openMenu()">Open Menu></a>
<!-- Menu abre escondido -->
<div [ngClass]="{'is-hidden': !opened}"></div>
Na view:
<div [hidden]="loading != true">
<span>Carregando</span>
</div>
No component:
...
loading: boolean = true;
onInit() {
setTimeout(() => {
this.load();
this.loading = false;
}, 1*1000)
}
...