Hello,
If the AuthGuard and PermissionGuard don't exist in the routing configuration you can access these routes without login. If you want to send an HTTP request you need to remove Authorize
annotation from your controller.
Hello,
Can you give code examples to understand your question clearly? Created components by ABP Suite are page components(Eg: BookComponent). This component is loaded by routing. If you want the replace this component you need to configure generated routing.module like the following way;
{
path: '',
component: BookComponent,
canActivate: [AuthGuard, PermissionGuard],
}
to
{
path: '',
component: RouterOutletComponent,
canActivate: [AuthGuard, PermissionGuard],
children: [
{
path: '',
component: ReplaceableRouteContainerComponent,
data: {
replaceableComponent: {
key: 'YOUR_COMPONENT_KEY',
defaultComponent: BookComponent,
} as ReplaceableComponents.RouteData<BookComponent>,
},
},
],
},
in your app component ts or you can do the same thing in APP_INITIALIZER provider factory.
import { ReplaceableComponentsService } from '@abp/ng.core';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<abp-loader-bar></abp-loader-bar>
<abp-dynamic-layout></abp-dynamic-layout>
`,
})
export class AppComponent {
constructor(private replaceableComponent: ReplaceableComponentsService) {
this.replaceableComponent.add({
key: 'YOUR_COMPONENT_KEY',
component: YOURCOMPONENT,
});
}
}
Hello,
Currently, proxy generation in angular microservice templates needs extra steps. We will change the microservice template. Please follow steps in gist
Hello,
In angular templates, ng-bootstrap library is used. Can you check whether there are any bs dropdowns initialized with jquery?
Also, you can use ImpersonationService
for impersonation actions.
import { ConfigStateService } from '@abp/ng.core';
import { Component } from '@angular/core';
import { map } from 'rxjs/operators';
import { ImpersonationService } from '@volo/abp.commercial.ng.ui/config';
@Component({
selector: 'app-your-component',
template: '<div *ngIf="isImpersonatorLogin$ | async" (click)="backToImpersonator()"></div>',
})
export class YourComponent {
isImpersonatorLogin$ = this.configState.getDeep$('currentUser.impersonatorUserId').pipe(map(Boolean))
constructor(
private configState: ConfigStateService,
private impersonationService: ImpersonationService,
) {}
backToImpersonator() {
this.impersonationService.impersonate({}).subscribe();
}
}
Hello
You can use the following example
import { ConfigStateService } from '@abp/ng.core';
import { Component } from '@angular/core';
import { map } from 'rxjs/operators';
@Component({
selector: 'app-your-component',
template: '<div *ngIf="isImpersonatorLogin$ | async"></div>',
})
export class YourComponent {
isImpersonatorLogin$ = this.configState.getDeep$('currentUser.impersonatorUserId').pipe(map(Boolean))
constructor(
private configState: ConfigStateService
) {}
}
Hello,
ABP Chat Module doesn't have the group chat feature. And it is not in our roadmap.
Hello,
Can you reinstall libraries with the yarn command after removing the node_moudles folder and 'package-lock.json' and 'yarn.lock' files?
What is your angular version?
Hello,
Sorry for the latency in answering your question. You can do it by injecting OPEN_MY_LINK_USERS_MODAL
token and executing injected function.
Usage:
import { Component, Inject } from '@angular/core';
import { OPEN_MY_LINK_USERS_MODAL } from '@volo/abp.commercial.ng.ui/config';
@Component({
/*Component Metadata*/
})
export class MyComponent {
constructor(
@Inject(OPEN_MY_LINK_USERS_MODAL) public openMyLinkUsersModal: () => void
) {}
}
<!-- My Component Template -->
<button class="btn btn-primary" click="openMyLinkUsersModal()"> Open LinkUsersModal </button>
Hello,
Can you add the following provider to your AppModule?
//app.module.ts
import { APP_INITIALIZER, Injector, NgModule } from '@angular/core';
import { LayoutService } from '@volo/ngx-lepton-x.core';
function setCollapsedSidemenu(injector: Injector) {
return () => {
const layoutService = injector.get(LayoutService);
layoutService.addClass('hover-trigger');
};
}
@NgModule({
imports: [ /* imports */],
declarations: [/*declarations*/],
providers: [
// ...other providers
{
provide: APP_INITIALIZER,
multi: true,
useFactory: setCollapsedSidemenu,
deps: [Injector],
},
],
bootstrap: [/*bootstrap comp*/],
})
export class AppModule {}