Try
Fevereiro 3, 2022, 6:27pm
#1
Caros, como faço um " dynamic service injection" com este construtor abaixo? É porque o sonar reclama que existe muitos parametros. “Constructor has too many parameters (9). Maximum allowed is 7.”
export class CadastroPessoaFisicaComponent implements OnInit {
constructor(@Inject('InformacaoSistema') sistema: BehaviorSubject<InformacaoSistema>,
private formBuilder: FormBuilder,
private navegacaoUtilService: NavegacaoUtilService,
private emailService: EmailService,
private pessoaService: PessoaService,
private consultaCepService: ConsultaCepService,
private mensageriaService: MensageriaService,
private dialogRef: MatDialog,
private router: Router) {
sistema.subscribe((infos) => {
this.informacoes = infos;
});
}
Não conhecia esse dynamic service injection , mas pesquisando, parece que é isso:
Defina no construtor apenas o Injector .
constructor(private injector : Injector) {
this.navegacaoUtilService = injector.get<NavegacaoUtilService>(NavegacaoUtilService);
}
Try
Fevereiro 4, 2022, 11:36pm
#3
Você sabe como instalar este injector? O Angular reclama.
Qual a versão do angular?
Talvez seu componente que esteja fazendo mais coisa do que ele deveria. Pense se vc consegue refatorar a ponto de deixar as responsabilidades separadas em outros componentes.
Try
Fevereiro 19, 2022, 10:22pm
#5
Isso deu certo, agora o problema é quando é uma String ou um tipo enum. Como seri a sintaxe?
public nome?: string,
public numeroDocumento?: string,
public numeroTelefone?: string,
public idKeycloak?: string,
public tipoPessoa?: TIPO_PESSOA,
public dataNascimento?: string,
public situacao?: SituacaoPadraoEnum
Não entendi a dúvida. O que String
ou Enum
teria a ver com as injeções?
Try
Fevereiro 19, 2022, 11:03pm
#7
Isso. A sintaxe não aceita String ou Enun
Mas String
ou Enum
são tipos que vc precisa injetar?
Try
Fevereiro 19, 2022, 11:15pm
#9
public nome?: string;
public situacao?: SituacaoPadraoEnum;
Assim, sem usar o Injector
, em algum momento, vc precisaria fazer algo assim?
constructor(
public nome?: string,
public situacao?: SituacaoPadraoEnum
) {}
Pq vc comentou que usando o Injector
a sintaxe não aceita String
ou enum
.
Try
Fevereiro 20, 2022, 4:21pm
#11
O problema é o Sonar. O Sonar reclama, ele só aceita até 7 parâmetros. Será que existe alguma forma do Sonar ignorar está regra?
Mas usando o Injector
tu não falou que tinha funcionado?
Try
Fevereiro 20, 2022, 6:33pm
#13
Funciona, mas pra string e enum não
Try
Fevereiro 20, 2022, 7:32pm
#15
Agora, fiquei confuso… Porque se eu usar String com S maiusculo funciona
Try
Fevereiro 20, 2022, 7:34pm
#16
Sabe que esgte é um tipo de dúvida que eu sempre tive, nunca sei se uso string ou String, int ou Integer
String
= javascript
string
= typescript
Como angular usa typescript, vc deve usar string
em minúsculo mesmo.
Try
Fevereiro 20, 2022, 8:27pm
#18
Seguindo a ideia do Injetor como eu faço para o caso de array?
this.paises = injector.get<Pais[]>(Pais[]);
Pais[] dentro dos parentes não está sendo aceito.
Mensagem:
any - Uma expressão de acesso do elemento deveria receber um argumento.ts(1011) - Exibir o Problema -
Nenhuma correção rápida disponível
Pq vc quer injetar um array? Normalmente, vc injetaria um serviço que seria usado para consultar os paises.
Try
Fevereiro 20, 2022, 8:53pm
#20
Vou fazer da mesma forma que fiz com string, enum, colocar no args?:{} dentro do constructor.