diff --git a/goofy-client/libs/kommentar-shared/src/lib/kommentar.linkrel.ts b/goofy-client/libs/kommentar-shared/src/lib/kommentar.linkrel.ts index 25191a37d56187c246bbf5a80558a97df059ec8c..6ab9742fd347bcb9cbc3ab7820a7c7d319c95678 100644 --- a/goofy-client/libs/kommentar-shared/src/lib/kommentar.linkrel.ts +++ b/goofy-client/libs/kommentar-shared/src/lib/kommentar.linkrel.ts @@ -4,5 +4,6 @@ export enum KommentarListLinkRel { } export enum KommentarLinkRel { - EDIT = 'edit' + EDIT = 'edit', + CREATED_BY = 'createdBy' } \ No newline at end of file diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html index 96d8609adbeb8e0e8b6bb44970f958f94a82d3de..ffe10301b39205fd0c5b11e26359846bce059344 100644 --- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html +++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html @@ -1,16 +1,14 @@ -<p - *ngIf="!editMode" - [attr.data-test-id]="(kommentar.text | convertForDataTest)" +<goofy-client-user-profile-in-kommentar-container [kommentar]="kommentar"></goofy-client-user-profile-in-kommentar-container> + +<p *ngIf="!editMode" [attr.data-test-id]="(kommentar.text | convertForDataTest)" (click)="editMode = true" tabindex="0" class="plain-text"> {{ kommentar.text }} </p> -<goofy-client-kommentar-form - *ngIf="editMode" +<goofy-client-kommentar-form *ngIf="editMode" data-test-id="kommentar-list-item-form" [kommentar]="kommentar" (cancel)="editMode = false" - class="edit-text" - data-test-id="kommentar-list-item-form"> + class="edit-text"> </goofy-client-kommentar-form> diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.spec.ts b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.spec.ts index c14003efd9ae83d78c91075596e4a8885f857482..4e743631dea0464904406920502bdf4c4f6f69c3 100644 --- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.spec.ts +++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ConvertForDataTestPipe } from '@goofy-client/tech-shared'; +import { UserProfileInKommentarContainerComponent } from '@goofy-client/user-profile'; import { createKommentarResource } from 'libs/kommentar-shared/test/kommentar'; import { configureTestSuite } from 'ng-bullet'; import { MockComponent } from 'ng-mocks'; @@ -15,7 +16,8 @@ describe('KommentarListItemInVorgangComponent', () => { declarations: [ KommentarListItemInVorgangComponent, ConvertForDataTestPipe, - MockComponent(KommentarFormComponent) + MockComponent(KommentarFormComponent), + MockComponent(UserProfileInKommentarContainerComponent) ] }) }) diff --git a/goofy-client/libs/kommentar/src/lib/kommentar.module.ts b/goofy-client/libs/kommentar/src/lib/kommentar.module.ts index 2a80bc985df64165fd08d8001424a62dc919f23a..90373963a6647689063fa40e75d92ed7ce58426f 100644 --- a/goofy-client/libs/kommentar/src/lib/kommentar.module.ts +++ b/goofy-client/libs/kommentar/src/lib/kommentar.module.ts @@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; import { KommentarSharedModule } from '@goofy-client/kommentar-shared'; import { TechSharedModule } from '@goofy-client/tech-shared'; import { UiModule } from '@goofy-client/ui'; +import { UserProfileModule } from '@goofy-client/user-profile'; import { VorgangSharedModule } from '@goofy-client/vorgang-shared'; import { KommentarFormComponent } from './kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component'; import { KommentarListInVorgangContainerComponent } from './kommentar-list-in-vorgang-container/kommentar-list-in-vorgang-container.component'; @@ -15,7 +16,8 @@ import { KommentarListItemInVorgangComponent } from './kommentar-list-in-vorgang VorgangSharedModule, UiModule, KommentarSharedModule, - TechSharedModule + TechSharedModule, + UserProfileModule ], declarations: [ KommentarListInVorgangContainerComponent, diff --git a/goofy-client/libs/navigation/src/lib/header-container/header/header.component.spec.ts b/goofy-client/libs/navigation/src/lib/header-container/header/header.component.spec.ts index e7708d9066e3033ecf0642a52e2e38c2a41ef84e..6412f14e797b9253b5b565b041a5528871b84d00 100644 --- a/goofy-client/libs/navigation/src/lib/header-container/header/header.component.spec.ts +++ b/goofy-client/libs/navigation/src/lib/header-container/header/header.component.spec.ts @@ -1,8 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { UiModule } from '@goofy-client/ui'; +import { UserIconComponent } from '@goofy-client/user-profile'; import { VorgangSearchContainerComponent } from '@goofy-client/vorgang-shared-ui'; -import { UserIconComponent } from 'libs/user-profile/src/lib/user-icon-container/user-icon/user-icon.component'; import { configureTestSuite } from 'ng-bullet'; import { MockComponent } from 'ng-mocks'; import { HeaderComponent } from './header.component'; diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.model.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.model.ts index dd39120d4f64c15f062fa9b25dc3b45999894694..112c3da82e929e9b5b1b2b54a8c2afa3e088c784 100644 --- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.model.ts +++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.model.ts @@ -2,6 +2,7 @@ import { ListResource } from "@goofy-client/tech-shared"; import { Resource } from "@ngxp/rest"; export interface UserProfile { + createdAt: Date; firstName: string; lastName: string; } diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts index a062387a90ac6953c5e045307f2c0848dfe39e54..bdcd8466b9fcc6465d3ab13da758461b39ba5ae0 100644 --- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts +++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts @@ -32,20 +32,22 @@ describe('OzgFileRepository', () => { describe('get user profile', () => { + const linkRel: string = VorgangHeaderLinkRel.ASSIGNED_TO; + it('should call resource factory', () => { - repository.getUserProfile(vorgang); + repository.getUserProfile(vorgang, linkRel); expect(resourceFactory.from).toHaveBeenCalledWith(vorgang); }) it('should get', () => { - repository.getUserProfile(vorgang); + repository.getUserProfile(vorgang, linkRel); - expect(resourceWrapper.get).toHaveBeenCalledWith(VorgangHeaderLinkRel.ASSIGNED_TO); + expect(resourceWrapper.get).toHaveBeenCalledWith(linkRel); }) it('should return result', () => { - const result = repository.getUserProfile(vorgang); + const result = repository.getUserProfile(vorgang, linkRel); expect(result).not.toBeNull(); expect(result).toBeObservable(hot('a', { a: userProfile })); diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.ts index 2560d5452d9c7c27b69f4075c51bc8b8a307e551..e25aea0fd2abe2fedc7a9a2b3b614513c80a9280 100644 --- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.ts +++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; import { ApiRootLinkRel, ApiRootResource } from '@goofy-client/api-root-shared'; -import { VorgangHeaderLinkRel, VorgangResource } from '@goofy-client/vorgang-shared'; -import { getUrl, ResourceFactory, ResourceUri } from '@ngxp/rest'; +import { getUrl, Resource, ResourceFactory, ResourceUri } from '@ngxp/rest'; import { Observable } from 'rxjs'; import { UserProfileListResource, UserProfileResource } from './user-profile.model'; @@ -12,8 +11,8 @@ export class UserProfileRepository { constructor(private resourceFactory: ResourceFactory) { } - public getUserProfile(vorgang: VorgangResource): Observable<UserProfileResource> { - return this.resourceFactory.from(vorgang).get(VorgangHeaderLinkRel.ASSIGNED_TO); + public getUserProfile(resource: Resource, linkRel: string): Observable<UserProfileResource> { + return this.resourceFactory.from(resource).get(linkRel); } public search(apiRoot: ApiRootResource, searchBy: string): Observable<UserProfileListResource> { diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts index eaace993a5f8c06240b8c6cb561fd6f817502cae..f6e4ba9068cba0bbc11b4d62243f53bbcdc03404 100644 --- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts +++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts @@ -23,7 +23,6 @@ describe('UserProfileService', () => { const userProfileList: UserProfileListResource = createUserProfileListResource(); const apiRoot: ApiRootResource = createApiRootResource(); - beforeEach(() => { repository = mock(UserProfileRepository); apiRootService = mock(ApiRootService); @@ -40,22 +39,24 @@ describe('UserProfileService', () => { describe('load user profile', () => { + const linkRel: string = VorgangHeaderLinkRel.ASSIGNED_TO; + beforeEach(() => { repository.getUserProfile.mockReturnValue(of(userProfile)); - service.createIfNotExist(getLink(vorgang, VorgangHeaderLinkRel.ASSIGNED_TO).href); + service.createIfNotExist(getLink(vorgang, linkRel).href); service.updateUserProfile = jest.fn(); }) it('should call repository', () => { - service.loadUserProfile(vorgang); + service.loadUserProfile(vorgang, VorgangHeaderLinkRel.ASSIGNED_TO); - expect(repository.getUserProfile).toHaveBeenCalledWith(vorgang); + expect(repository.getUserProfile).toHaveBeenCalledWith(vorgang, linkRel); }) it('should update value', () => { - service.loadUserProfile(vorgang); + service.loadUserProfile(vorgang, VorgangHeaderLinkRel.ASSIGNED_TO); - expect(service.updateUserProfile).toHaveBeenCalledWith(vorgang, userProfile); + expect(service.updateUserProfile).toHaveBeenCalledWith(vorgang, linkRel, userProfile); }) }) diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.ts index be36b4bf39a1407fad2bd1335997745cda405ca3..1aed527daa154f2022d11ab767964f96f99f2824 100644 --- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.ts +++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.ts @@ -2,9 +2,9 @@ import { Injectable } from '@angular/core'; import { Params } from '@angular/router'; import { ApiRootService } from '@goofy-client/api-root-shared'; import { createEmptyStateResource, createStateResource, doIfLoadingRequired, NavigationService, StateResource } from '@goofy-client/tech-shared'; -import { VorgangHeaderLinkRel, VorgangResource } from '@goofy-client/vorgang-shared'; +import { VorgangService } from '@goofy-client/vorgang-shared'; import { getLink } from '@ngxp/rest'; -import { ResourceUri } from '@ngxp/rest/lib/resource.model'; +import { Resource, ResourceUri } from '@ngxp/rest/lib/resource.model'; import { isNil } from 'lodash-es'; import { BehaviorSubject, Observable, Subscription } from 'rxjs'; import { filter, first, flatMap } from 'rxjs/operators'; @@ -35,6 +35,8 @@ export class UserProfileService { if (NavigationService.isVorgangListPage(params)) { this.userProfiles = <any>{}; this.hideUserProfileSearch(); + } else if (NavigationService.isVorgangDetailPage(params, VorgangService.VORGANG_WITH_EINGANG_URL)) { + this.userProfiles = <any>{}; } } @@ -51,14 +53,14 @@ export class UserProfileService { this.userProfileSearchList.next(createEmptyStateResource()); } - public getAssignedUserProfile(vorgang: VorgangResource): Observable<StateResource<UserProfileResource>> { - const uri: ResourceUri = this.getUserProfileUri(vorgang); + public getAssignedUserProfile(vorgang: Resource, linkRel: string): Observable<StateResource<UserProfileResource>> { + const uri: ResourceUri = this.getUserProfileUri(vorgang, linkRel); this.createIfNotExist(uri); doIfLoadingRequired(this.userProfiles[uri].value, () => { this.userProfiles[uri].next({ ...this.userProfiles[uri].value, loading: true }); - this.loadUserProfile(vorgang) + this.loadUserProfile(vorgang, linkRel) }); return this.userProfiles[uri].asObservable(); } @@ -67,16 +69,16 @@ export class UserProfileService { if (isNil(this.userProfiles[uri])) this.userProfiles[uri] = new BehaviorSubject(createEmptyStateResource<UserProfileResource>()); } - loadUserProfile(vorgang: VorgangResource): void { - this.repository.getUserProfile(vorgang).pipe(first()).subscribe((userProfile: UserProfileResource) => this.updateUserProfile(vorgang, userProfile)); + loadUserProfile(vorgang: Resource, linkRel: string): void { + this.repository.getUserProfile(vorgang, linkRel).pipe(first()).subscribe((userProfile: UserProfileResource) => this.updateUserProfile(vorgang, linkRel, userProfile)); } - updateUserProfile(vorgang: VorgangResource, userProfile: UserProfileResource): void { - this.userProfiles[this.getUserProfileUri(vorgang)].next(createStateResource(userProfile)); + updateUserProfile(vorgang: Resource, linkRel: string, userProfile: UserProfileResource): void { + this.userProfiles[this.getUserProfileUri(vorgang, linkRel)].next(createStateResource(userProfile)); } - private getUserProfileUri(vorgang: VorgangResource): ResourceUri { - return getLink(vorgang, VorgangHeaderLinkRel.ASSIGNED_TO).href; + private getUserProfileUri(vorgang: Resource, linkRel: string): ResourceUri { + return getLink(vorgang, linkRel).href; } public getSearchedUserProfiles(): Observable<StateResource<UserProfileListResource>> { diff --git a/goofy-client/libs/user-profile/src/index.ts b/goofy-client/libs/user-profile/src/index.ts index 53cc4bd8333eaba3b08c49b20bad85aca6fc933e..facb99e49bfb459a098ef406b088861d245ce240 100644 --- a/goofy-client/libs/user-profile/src/index.ts +++ b/goofy-client/libs/user-profile/src/index.ts @@ -1,4 +1,5 @@ export * from './lib/assign-user-profile-button-container/assign-user-profile-button-container.component'; export * from './lib/user-icon-container/user-icon-container.component'; +export * from './lib/user-icon-container/user-icon/user-icon.component'; +export * from './lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component'; export * from './lib/user-profile.module'; - diff --git a/goofy-client/libs/user-profile/src/lib/user-icon-container/user-icon-container.component.ts b/goofy-client/libs/user-profile/src/lib/user-icon-container/user-icon-container.component.ts index 3d33150259e49caa0e3d0f09f19b94fcc3bd1e93..0f079815cd78fb1725f43888f5e7223111e964df 100644 --- a/goofy-client/libs/user-profile/src/lib/user-icon-container/user-icon-container.component.ts +++ b/goofy-client/libs/user-profile/src/lib/user-icon-container/user-icon-container.component.ts @@ -46,7 +46,7 @@ export class UserIconContainerComponent implements OnChanges, AfterContentInit { ngOnChanges(changes: SimpleChanges): void { if (changes.vorgang && !isNil(this.vorgang) && hasLink(this.vorgang, VorgangHeaderLinkRel.ASSIGNED_TO)) { - this.userProfile$ = this.userProfileService.getAssignedUserProfile(this.vorgang); + this.userProfile$ = this.userProfileService.getAssignedUserProfile(this.vorgang, VorgangHeaderLinkRel.ASSIGNED_TO); } } diff --git a/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.html b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.html new file mode 100644 index 0000000000000000000000000000000000000000..748d1d823f7538c9f91558cb4e4c5a1f7a161a40 --- /dev/null +++ b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.html @@ -0,0 +1,9 @@ +<ng-container *ngIf="userProfileStateResource$ | async as userProfileStateResource"> + <goofy-client-user-icon [userProfileStateResource]="userProfileStateResource"></goofy-client-user-icon> + + <div *ngIf="userProfileStateResource.resource"> + <span>{{userProfileStateResource.resource.firstName}} {{userProfileStateResource.resource.lastName}}</span> + <span>{{userProfileStateResource.resource.createdAt }}</span> + </div> + +</ng-container> \ No newline at end of file diff --git a/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.scss b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.spec.ts b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a05a3d3f9092ee639fc3ffe3c608cbce9de26b4 --- /dev/null +++ b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.spec.ts @@ -0,0 +1,39 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { mock } from '@goofy-client/test-utils'; +import { UserProfileService } from '@goofy-client/user-profile-shared'; +import { configureTestSuite } from 'ng-bullet'; +import { MockComponent } from 'ng-mocks'; +import { UserIconComponent } from '../user-icon-container/user-icon/user-icon.component'; +import { UserProfileInKommentarContainerComponent } from './user-profile-in-kommentar-container.component'; + +describe('UserProfileInKommentarContainerComponent', () => { + let component: UserProfileInKommentarContainerComponent; + let fixture: ComponentFixture<UserProfileInKommentarContainerComponent>; + + const userProfileService = mock(UserProfileService); + + configureTestSuite(() => { + TestBed.configureTestingModule({ + declarations: [ + UserProfileInKommentarContainerComponent, + MockComponent(UserIconComponent) + ], + providers: [ + { + provide: UserProfileService, + useValue: userProfileService + } + ] + }) + }) + + beforeEach(() => { + fixture = TestBed.createComponent(UserProfileInKommentarContainerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.ts b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6d7331ed09ea200023d7e526f5a37e356eace386 --- /dev/null +++ b/goofy-client/libs/user-profile/src/lib/user-profile-in-kommentar-container/user-profile-in-kommentar-container.component.ts @@ -0,0 +1,27 @@ +import { Component, Input, OnChanges } from '@angular/core'; +import { KommentarResource } from '@goofy-client/kommentar-shared'; +import { StateResource } from '@goofy-client/tech-shared'; +import { UserProfileResource, UserProfileService } from '@goofy-client/user-profile-shared'; +import { KommentarLinkRel } from 'libs/kommentar-shared/src/lib/kommentar.linkrel'; +import { isNil } from 'lodash-es'; +import { Observable } from 'rxjs'; + +@Component({ + selector: 'goofy-client-user-profile-in-kommentar-container', + templateUrl: './user-profile-in-kommentar-container.component.html', + styleUrls: ['./user-profile-in-kommentar-container.component.scss'] +}) +export class UserProfileInKommentarContainerComponent implements OnChanges { + + @Input() kommentar: KommentarResource; + + userProfileStateResource$: Observable<StateResource<UserProfileResource>>; + + constructor(private userProfileService: UserProfileService) { } + + ngOnChanges(): void { + if (!isNil(this.kommentar)) { + this.userProfileStateResource$ = this.userProfileService.getAssignedUserProfile(this.kommentar, KommentarLinkRel.CREATED_BY); + } + } +} \ No newline at end of file diff --git a/goofy-client/libs/user-profile/src/lib/user-profile.module.ts b/goofy-client/libs/user-profile/src/lib/user-profile.module.ts index f7e615ee55e0ec21003e20b5ae1b122faf77e9d3..4c5b4d2b46beab85fc934813e01cd0033f2d3e83 100644 --- a/goofy-client/libs/user-profile/src/lib/user-profile.module.ts +++ b/goofy-client/libs/user-profile/src/lib/user-profile.module.ts @@ -6,6 +6,7 @@ import { UserProfileSharedModule } from '@goofy-client/user-profile-shared'; import { AssignUserProfileButtonContainerComponent } from './assign-user-profile-button-container/assign-user-profile-button-container.component'; import { UserIconContainerComponent } from './user-icon-container/user-icon-container.component'; import { UserIconComponent } from './user-icon-container/user-icon/user-icon.component'; +import { UserProfileInKommentarContainerComponent } from './user-profile-in-kommentar-container/user-profile-in-kommentar-container.component'; import { UserProfileSearchContainerComponent } from './user-profile-search-container/user-profile-search-container.component'; import { UserProfileSearchComponent } from './user-profile-search-container/user-profile-search/user-profile-search.component'; @@ -21,12 +22,14 @@ import { UserProfileSearchComponent } from './user-profile-search-container/user UserIconContainerComponent, UserProfileSearchComponent, UserProfileSearchContainerComponent, - AssignUserProfileButtonContainerComponent + AssignUserProfileButtonContainerComponent, + UserProfileInKommentarContainerComponent ], exports: [ UserIconContainerComponent, UserIconComponent, - AssignUserProfileButtonContainerComponent + AssignUserProfileButtonContainerComponent, + UserProfileInKommentarContainerComponent ] }) export class UserProfileModule { }