catchError(this.handleError)
catchError(error => this.handleError(error))
Каким образом получить в Angular шаблон и после этого использовать его в wysiwyg редакторе?
Какой редактор использовать для этих целей?
Как можно скачать сформированный текст в необходимом формате (.html)?
Возможно уже есть какие-то opensource решения для удобного редактирования и хранения html (email!) шаблонов?
collapseAll()
у сервиса, который будет this.isAllCollapsedRef.next(true)
записывать новое значение в наше Observable свойство у сервиса. @Injectable({
providedIn: "root"
})
export class ItemsTreeService {
private readonly isAllCollapsed$ = new ReplaySubject<boolean>(1);
public collapseAll() {
this.isAllCollapsed.next(true);
}
public isAllCollapsed() {
return this.isAllCollapsed$.asObservable();
}
}
@Component({
template: `
<div *ngIf="isExpanded | async">
// content
</div>
`
})
export class ItemTreeNodeComponent implements OnInit {
public readonly expandRef = new BehaviorSubject<boolean>(false);
public isExpanded: Observable<boolean>;
constructor(private readonly itemsTreeService: ItemsTreeService) {}
public ngOnInit() {
this.isExpanded = this.expandRef.asObservable().pipe(
combineLatest(this.itemsTreeService.isAllCollapsed()),
map(([expanded, allCollapsed]) => /* в зависимости от того, что вам пришло, решаете открыть вам ваш айтем или нет */)
);
}
public expand() {
this.expandRef.next(true);
}
public collapse() {
this.expandRef.next(false);
}
}
<router-outlet></router-outlet>
для его потомков.Component({
selector: 'home',
template: `
<div>
<h1>Home</h1>
<h3>Total users: # {{users?.length}}</h3>
</div>
<router-outlet></router-outlet>
`
})
RouterModule.forRoot([
{ path: 'login', component: LoginViewComponent },
{ path: 'home', component: HomeViewComponent,
// children: [
// {
// path: 'catalog',
// component: CatalogViewComponent
// }
// ]
},
{ path: 'home/catalog', component: CatalogViewComponent },
{ path: '**', redirectTo: 'login' }
])
<h1>Hello world!</h1>
<b-component>
<div>
<p>Element declarated from parent</p>
</div>
</b-component>
<div>
<p>Hello from B</p>
<ng-content></ng-content>
</div>
<base href="https://[username].github.io/[repo]/">
ng build --prod --base-href https://[username].github.io/[repo]/
public postArticle({ id, head, text }: Article) {
const apiFields = { id, head, text };
const apiData = new FormData();
for (const key in apiFields) {
apiData.append(key, apiData[key]);
}
}
@Directive({
selector: 'textarea[appText]'
})
export class TextDirective {
@Output() public hasScrollBar = new EventEmitter<boolean>();
constructor(private readonly elRef: ElementRef<HTMLTextAreaElement>) {}
@HostListener('change')
@HostListener('input')
public changes() {
const elem = this.elRef.nativeElement;
this.hasScrollBar.emit(elem.clientHeight < elem.scrollHeight);
}
}
<textarea appText (hasScrollBar)="print($event)"></textarea>
import { interval } from 'rxjs';
import { switchMap } from 'rxjs/operators';
const requests$ = interval(300).pipe(
switchMap(() => http.get('path'))
)
url: String = '';
ngOnInit() {
this.Preview.url
.subscribe(new_url => this.url = new_url);
}
public previewUrl$: Observable<string>
ngOnInit() {
this.previewUrl$ = this.Preview.url
}
<div class="preview" *ngIf="(previewUrl$ | async) as url">
<img class="preview__img" [src]="url">
</div>
dataTasks: any[];
, но ничего ему не присвоили, оно равно undefined. Можно сделать так dataTasks: any[] = new Array();
. Т.е. чтобы до того момента, пока данные не будут получены - там был массив а не undefined. я хотел бы чтобы pipe выводил их как целые. То есть чтобы пользователь видел не дробное число, а целое, например округлённое.
Важно чтобы при этом они сами по себе оставались дробными(для вычислений, которые будут позже производиться в компоненте)
Но если я создам файл webpack.config.js и заполню одну из секций(например Output), то будет ли это означать, что Output будет браться из webpack.config.js, а остальные значения из того же неведомого конфига?